0

我有一个使用 MVC4 Simple Membership 提供程序的应用程序。我在 Login 方法中添加了一些代码,这些代码设置了一些我需要处理一些安全问题的会话信息。

如果我关闭浏览器并返回它,MVC 仍然在左上角显示我已登录,并且 User.Username 属性仍然填写,但我放在那里的额外内容显然不是。

这种“身份验证”在何时何地进行?我尝试检查 Global.asax 中 Application_Start 中的请求和用户对象,但运行时它们仍然为空。

在该身份验证管道中是否有其他地方可以覆盖或调用我的方法来提取我需要的更合适的东西?

谢谢!

4

1 回答 1

1

“记住我”功能与简单会员资格或任何会员资格无关。使用它时不会发生实际的“登录”。它是放置在用户系统上的持久 cookie,并且在加载页面时会读取该 cookie。如果它包含正确加密的数据,则认为用户已通过身份验证,而无需再次通过成员身份验证。

你需要做什么取决于你是怎么做的。如果您在会话中存储数据,无论如何这都是不好的,因为会话可以随时重置,并且会话未连接到身份验证。您需要做的是检查您需要的数据是否在会话中,如果没有,则重建它。这样,当您稍后回来或您的会话被重置时,它就可以工作。

无论如何,会话可能不应该被使用,因为它不能很好地扩展。更好的选择是连接到 Controller 类的 OnAuthorization 方法并在那里做你需要的事情,这样它就可以在每个页面请求上完成,而不管会话可能是什么,也可能不是什么。

另一种选择是创建自定义 AuthorizationFilter。

于 2013-07-13T18:05:44.580 回答