ASP.NET:在代码中验证用户
我正在玩认证和授权以准备一些任务.我创建了两个页面:Login.aspx和Default.aspx.在配置文件中,我为表单设置了身份验证,并拒绝了未经身份验证的用户访问:
<authentication mode="Forms"> <forms name="aaa" defaultUrl="~/Login.aspx" /> </authentication> <authorization> <deny users="?"/> </authorization> 然后我写了一些简单的代码来验证我在Login.aspx中的用户: protected void Page_Load(object sender,EventArgs e) { GenericIdentity identity = new GenericIdentity("aga","bbb"); Context.User = new GenericPrincipal(identity,new String[] { "User" }); ; Response.Redirect("~/Default.aspx"); } 当我运行它时,重定向不会发生.而是一遍又一遍地调用Login.aspx,因为用户未经过身份验证(每次加载时Context.User.Identity.IsAuthenticated都为false).我究竟做错了什么? 解决方法
Context.User仅设置当前请求的主体.重定向发生后,当前请求结束,新的请求再次以未覆盖的主体开始(显然未经过身份验证).因此,设置Context.User实际上不会对任何内容进行身份验证.
使用FormsAuthentication.SetAuthCookie()会将用户的cookie设置为FormsAuthentication提供程序接受的有效值,或将该令牌放入URL中.您可以重定向到您的心脏内容,因为cookie显然会与用户一起用于将来的请求. 来自MSDN(em添加):
如上所述,这不一定需要cookie – 名称有点误导,因为如果FormsAuthentication处于无cookie模式,它仍将通过URL工作:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-4 – signalR:/ signalr/hubs不生成
- 使用Classic ASP在XML文档中附加子项
- asp.net-mvc – 无法加载指定的元数据资源
- asp.net-mvc-3 – Amazon CloudFront Cache失效策略,以确保
- asp.net-mvc – MVC的理由?
- rest – 在ASP.NET Core中实现“JSON Merge Patch” – 最好
- asp.net – Excel VBA查询外部.aspx页面并检索数据
- 在asp.net生成的代码中没有“使用”引用
- asp.net-web-api – 在Bot框架中自动部署(Bot LUIS QnA表存
- asp.net-core – Controller.json设置Serialization.Refere
- asp.net-mvc – MVC的HTTP缓存 – Last-Modified
- asp.net – Global.asax PostAuthenticateReques
- .NET Core技术研究-主机Host ASP.NET
- 使用Azure ACS时无法从Active Directory注销
- Pro ASP.NET Core MVC(三)【MVC模式,项目和约定
- ASP.NET Web窗体 – 模型视图演示者和用户控件
- asp.net-mvc – 如何通过Resharper 8.2.1停止INC
- asp.net – 正常与云/ Azure托管和SQL Azure与SQ
- asp.net-mvc – ASP.NET MVC是否有任何DateTime路
- asp.net – DropDownList对于不选择值的集合