我有一个使用MVC4简单成员资格提供程序的应用程序。我在Login方法中添加了一些代码,用于设置我需要处理一些安全事项的会话信息。
如果我关闭浏览器并返回它,MVC仍然显示我在左上角登录并且仍然填写了User.Username属性,但是我放在那里的额外内容显然不是。
此“身份验证”何时或何地发生?我尝试在Global.asax中检查Application_Start中的请求和用户对象,但是当它运行时它们仍然是null。
在我认证管道中的其他地方是否可以覆盖或调用我的方法来提取我需要的更合适的东西?
谢谢!
答案 0 :(得分:1)
您需要做的事情取决于您的行为方式。如果您在会话中存储数据,则无论如何都是错误的,因为会话可以随时重置,并且会话未连接到身份验证。您需要做的是检查您需要的数据是否在会话中,如果不是,则重建它。这样,当您稍后返回时,或者您的会话被重置时,它会起作用。
会话可能不应该被使用,因为它不能很好地扩展。一个更好的选择是挂钩Controller类的OnAuthorization方法,并在那里做你需要的,这样就可以在每个页面请求上完成,无论会话可能是什么或不是什么。
另一种选择是创建自定义AuthorizationFilter。