我使用chrome作为调试浏览器。
当我启动我的MVC(Razor)网站时,点击停止按钮,网站继续以chrome运行,而我可以在VS中进行更改...完美。
但有时候(由于我不知道会有什么变化),当我刷新页面时,我仍然登录,但是我失去了所有的会话变量。
如果会话变量被清除,我怎么能抓住,所以我可以把我的用户带回登录页面? (我需要一个kinde global.asax page_request
方法。
我确实有.. <forms loginUrl="~/Account/LogOn" timeout="2880" />
...但我没有注销 - 只清除会话变量。
答案 0 :(得分:2)
这是因为您的登录状态持久存储在客户端cookie中。会话状态持久存储在内存中的服务器上(或其他)。当您的应用重新启动时,会话被清除,但用户仍然在其计算机上拥有有效的表单身份验证令牌(假设此处为表单身份验证)。默认情况下,表单身份验证不以任何方式使用会话。
因此,在请求开始时,您可以在数据库为null时从数据库重新加载用户会话(如果可能,我认为这是首选方法)或者将用户重定向到登录屏幕,并显示“ooops”消息抱歉,我们已经失去了你的会话“(这不好!)
答案 1 :(得分:0)
如果使用内置授权功能,则只需添加[授权]属性即可。这里有一些关于使用自定义身份验证的信息:
答案 2 :(得分:0)