ASP.NET MVC、表单身份验证和会话
我想在用户登录时执行以下行,以便我可以访问 MembershipUser 对象。但是我很难弄清楚何时设置它。
Session["User"] = Membership.GetUser();
到目前为止,我已经尝试过...
- Application_AcquireRequestState
- Application_BeginRequest
- FormsAuthentication_OnAuthenticate
对于每个会话状态不一定可用。
在登录页面中手动调用它很容易,但我也需要在使用 cookie 自动登录时让它工作。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您想要做的只是将任意数据与用户名一起存储,有一个名为 FormsAuthenticationExtensions 的开源项目,它允许您以非常简单的方式完成此操作:
在您的登录操作中,您可以存储您的像这样的数据:
然后像这样读回它:
数据存储在保存身份验证票证的同一个 cookie 中,因此只要用户登录,它就可用。
项目页面: http://formsauthext.codeplex.com/
Nuget:http:// /nuget.org/List/Packages/FormsAuthenticationExtensions
If all you want do is store arbitrary data along with the username, there is an open source project called FormsAuthenticationExtensions that allows you to do exactly this in a very simple manner:
In your Login action you would store your data like this:
And you read it back like this:
Data is stored in the same cookie holding the authentication ticket, so it will be available for as long as the user is logged in.
Project page: http://formsauthext.codeplex.com/
Nuget: http://nuget.org/List/Packages/FormsAuthenticationExtensions
为什么?您可以从任何地方访问 Membership.GetUser。这是一个静态方法。将可以从任何地方访问的值放在可以从任何地方访问的地方有什么意义?
Why? You can access Membership.GetUser from anywhere. It's a static method. What is the point of placing a value you can access from anywhere in a place you can access from anywhere?