我有一个登录页面,所以一旦用户输入正确的详细信息,他就会进入主页。现在我想实现3件事
一旦他点击“退出”按钮,他必须被重定向到一个页面,说“成功注销”,即使点击浏览器中的后退按钮,他也应该无法访问。
如果用户离开主页空闲一段特定的时间,比如10分钟,然后他尝试在10分钟后导航,一个msg应显示“你的会话已经过期登录”
如果给出主页的网址,他除非登录,否则无法访问。 我不确定我究竟需要做什么以及如何做。 Plz帮助 此致
Indranil Mutsuddy
答案 0 :(得分:2)
1)当用户退出系统时,我建议做一个Session.Abandon()。如果用户单击浏览器中的“后退”按钮,他可能会看到旧页面的缓存版本(这完全取决于浏览器),但无论如何他都无法做任何事情。
禁用页面中的缓存,用户甚至不应该看到缓存的旧版本:)
一个简单的方法是将以下内容添加到Global.asax的Application_BeginRequest
:
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetNoStore();
2)在你的web.config中将会话lifetim设置为10分钟,增量..这样就可以了。
<system.web>
<authentication mode="Forms">
<forms defaultUrl="~/LoggedIn.aspx" loginUrl="~/Login.aspx" protection="All" path="/" slidingExpiration="true" timeout="10"/>
</authentication>
</system.web>
3)您可以使用web.config中的授权规则执行此操作。如果您不希望匿名用户访问您的网站,只需启用对此类登录用户的访问权限:
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
如果您想要限制访问不是整个网站,而只是限制某些区域(如MyAccount区域,那么您可以添加它。注意:Web.config可以有多个<location>
元素!< / p>
<location path="MyAccountFolder">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
关于位置标记有一个重要的注意事项。 Path现在以'/'开头!因此,如果您想要保护/ MyAccount文件夹,那么您的代码将如下所示:
<location path="MyAccount" />
答案 1 :(得分:0)
案例1:
单击注销按钮时,清除会话。
单击浏览器中的后退按钮可能会导致从缓存中获取页面。因此,通过页面中的cheking会话可能无效。您可以禁用页面的缓存,以便在单击后退按钮时,将生成对页面的新请求。
对于不缓存的页面,请设置此
Response.Cache.SetCacheability(HttpCacheability.NoCache);
案例2:
您可以将Session的默认超时设置为10分钟。请参阅 HttpSessionState.Timeout Property
案例3:
检查Session是否为null,如果发现为null,则重定向到登录页面。
答案 2 :(得分:0)
您通常应该使用ASP.NET Forms Authentication。
单击“注销”按钮时,请调用FormsAuthentication.SignOut。这将从cookie中删除表单身份验证票证信息(如果没有cookie,则删除URL)。
对于超时,请使用web.config的system.web / authentication / forms元素中的timeout属性。请注意,您的表单身份验证超时与会话超时无关。