asp.net - session 过期时如何重定向到登录页面(ASP.NET 3.5 FormsAuthen)

标签 asp.net

我正在使用 FormsAuthentication 和 ASP.Net SqlMembership Provider。我想提供一个功能,当底层 session 过期时重定向到登录页面。

我将以下代码块放入我的 BasePage OnInit 中。据我测试,即使我提供了正确的用户 ID 和密码,它仍然会继续重定向到登录页面。按理说,它应该带我到默认页面。

if (Context.Session != null && Session.IsNewSession && this.Request.IsAuthenticated)
        {
            string cookieHeader = Request.Headers["Cookie"];
            if (cookieHeader != null && cookieHeader.IndexOf("ASP.NET_SessionId") >= 0)
            {


                    HttpContext.Current.Session.Abandon();                       
                    FormsAuthentication.SignOut();                        
                    Response.Redirect(FormsAuthentication.LoginUrl);                                           

            }
        }

最佳答案

您不需要任何自定义代码来实现此功能,框架支持它。只需在 web.config 中配置即可:

<authentication mode="Forms">
    <forms defaultUrl="~/Default.aspx"
        loginUrl="~/Login.aspx"
        slidingExpiration="true"
        timeout="60" />
</authentication>

通过上述配置,当用户的 session 过期时,用户将始终被重定向到 Login.aspx 页面。超时时间为 60 分钟,滑动过期意味着每次用户向 Web 应用程序发出请求时都会延长超时时间,因此如果他保持事件状态, session 就不会过期。与您尝试做的事情相比,这样的配置为您提供了另一个优势 - 一旦用户登录,他将自动重定向回他最初请求的资源。您始终可以覆盖和自定义此行为。

关于asp.net - session 过期时如何重定向到登录页面(ASP.NET 3.5 FormsAuthen),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/654005/

相关文章:

c# - 执行Response.Redirect时如何修改Request.Headers ["Referer"]?

c# - 在 GridView C# 中更新列行

c# - 无法创建 NopEngine 实例

javascript - 刷新 UpdatePanel 时未加载 Google 交互式图表

c# - 单元测试

php - 在 php/asp.net 应用程序中保存/加载 img/文件(word、excel 等)的最佳方法是什么?

c# - 旧的 App_Web.xxxx.dll 会影响站点行为吗?

c# - 使用 IHttpAsyncHandler 异步调用 WebService

asp.net - 取消选择 ListView 中的记录

c# - 用逗号和小数点显示数字