asp.net中的会话

时间:2010-04-20 06:19:38

标签: asp.net session

我有一个登录页面,所以一旦用户输入正确的详细信息,他就会进入主页。现在我想实现3件事

  1. 一旦他点击“退出”按钮,他必须被重定向到一个页面,说“成功注销”,即使点击浏览器中的后退按钮,他也应该无法访问。

  2. 如果用户离开主页空闲一段特定的时间,比如10分钟,然后他尝试在10分钟后导航,一个msg应显示“你的会话已经过期登录”

  3. 如果给出主页的网址,他除非登录,否则无法访问。 我不确定我究竟需要做什么以及如何做。 Plz帮助 此致

  4. Indranil Mutsuddy

3 个答案:

答案 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属性。请注意,您的表单身份验证超时与会话超时无关。