在asp.net mvc中形成超时问题

gs1*_*111 5 c# asp.net-mvc timeout forms-authentication

如何在asp.net mvc中关闭表单身份验证。我具有旨在进入Web应用程序的注册,登录和忘记密码页面。最初我

我目前将asp.net mvc Web应用程序托管为单个代码库和多个数据库格式。我遇到表单在一段时间内过期的情况,而logon.aspx页面出现在主页的中间。我发现这是因为以下代码:

webconfig:
<authentication mode="Forms"><forms timeout="180000" slidingExpiration="false"/></authentication>

logon.cshtml:
  FormsAuthentication.SetAuthCookie(user.UserName, false);
 return RedirectToAction("Index", "Home");
Run Code Online (Sandbox Code Playgroud)

我不希望我的用户会话或表单在他们注销之前过期。如何删除身份验证模式或如何解决此超时问题?请帮忙。

这是我完整的webconfig代码:

<system.web>
    <customErrors mode="Off" />
    <globalization uiCulture="en-AU" culture="en-AU" />
    <!--<sessionState mode="InProc" />-->
    <sessionState timeout="1500"></sessionState>
    <httpRuntime encoderType="AntiXssEncoder, OnlineAB" />
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
    </compilation>
    <authentication mode="Forms">
      <forms timeout="180000" slidingExpiration="false"/>

    </authentication>
    <membership>
      <!--<providers>
        <clear />
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
      </providers>-->
    </membership>
    <profile>
      <!--<providers>
        <clear />
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
      </providers>-->
    </profile>
    <!--<roleManager enabled="false">
      <providers>
        <clear />
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>-->
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
  </system.web>
Run Code Online (Sandbox Code Playgroud)

Zah*_*med 2

根据MSDN

如果发出请求并且超过一半的超时间隔已过,则滑动过期会重置有效身份验证 cookie 的过期时间。如果 cookie 过期,用户必须重新进行身份验证。将 SlidingExpiration 属性设置为 false 可以根据配置的超时值限制身份验证 cookie 的有效时间,从而提高应用程序的安全性。

从配置中删除此属性

<authentication mode="Forms">
  <forms timeout="180000" slidingExpiration="false"/>
</authentication>
Run Code Online (Sandbox Code Playgroud)

并替换为:

<authentication mode="Forms" />
Run Code Online (Sandbox Code Playgroud)

还可以增加会话超时或删除默认值:

删除这个:

<sessionState timeout="1500"></sessionState>
Run Code Online (Sandbox Code Playgroud)