当前位置:  开发笔记 > 编程语言 > 正文

Asp.net:实现自动注销功能

如何解决《Asp.net:实现自动注销功能》经验,为你挑选了2个好方法。

我必须在我的一个项目中实现自动注销功能,我只是想知道从哪里开始寻找想法但是SO.

我需要的是,如果用户会话已过期,应用程序将用户重定向到登录页面.请告诉我应该采取什么方法来解决这个问题.

问题陈述: 如果用户在任何给定的登录实例中离开系统超过n分钟,系统应自动将其注销.



1> Zhaph - Ben ..:

和问题一样对评论进行评论,我不确定你是否会在一段时间之后将用户注销,无论活动如何,或者只是在一段时间不活动之后.

如果您很乐意使用标准的ASP.NET机制,那么无需任何重要工作即可完成此操作:

设置您的会员提供商.

确保您的身份验证部分定义了loginUrl:


  

您可以使用forms元素上的"timeout"属性设置默认30分钟以外的超时:


  

这将在您的网站停用15分钟后将用户注销(浏览器打开时没有javascript"heartbeat"或者他们在另一个网站上花了15分钟).

拒绝匿名用户访问


  

然后确保使用location元素可以访问所有用户的登录,注册和可能忘记的密码页面:


  
    
      
    
  


  
    
      
    
  


这样,当用户的身份验证cookie过期时,它们将被重定向到表单页面的loginUrl元素中指定的URL.


如果您没有使用标准的ASP.NET机制,那么您可能最好实现"基页"类型模型.

创建一个继承自System.Web.UI.Page的新类,该类将检查用户的登录状态,如果他们未登录/超时,则将其重定向到您的登录页面.

在您要锁定的页面中,而不是从System.Web.UI.Page继承,您从基页类继承(这种设置的一个示例做类似的事情 - 检查每个页面上的设置)可以是在我的答案中看到


你的登录页面可能需要有一些破坏JS的框架才能跳出iFrame:

if (top!=self.parent){
  top.location=self.parent.location;
}

或者你是说通过按"返回"他们仍然可以通过浏览器缓存看到你的页面?在这种情况下,您需要在每个页面上使用缓存标头:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

好吧,在这种情况下,您还需要一个JS计时器对象来执行登录页面的Location.Replace - 在每个页面的用户控件中(或者更好,在您的母版页中)将其自动重定向用户在n分钟后:


时间以毫秒为单位,因此这将在15分钟内将它们移动,并且不需要为此完成整个jQuery框架.

您可能还想查看元刷新标记:


这将迫使浏览器在15分钟后刷新登录页面(这是一秒钟内).



2> renegadeMind..:

这是通过以下方式实现的:

1)将每个请求(服务器和ajax,不包括会话检查ajax请求)的时间戳保存到会话var中.

2)使用ajax频繁地通过JS函数轮询服务器,并检查会话时间戳和ajax请求时间之间的时间差是否大于会话超时val然后注销当前用户并返回bool for那个ajax请求.

3)如果返回的bool为true,则将当前页面重定向到登录页面.


您应该将此标记为答案,以节省人们花时间
推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有