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

时间:2013-12-13 05:51:05

标签: c# asp.net-mvc timeout forms-authentication

如何在asp.net mvc中关闭表单身份验证。我有设置为进入webapplication的register,logon和forgotpassword页面。 最初我

我目前将我的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");

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

这是我的完整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>

2 个答案:

答案 0 :(得分:2)

根据MSDN

  

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

从配置

中删除此属性
<authentication mode="Forms">
  <forms timeout="180000" slidingExpiration="false"/>
</authentication>

并替换为:

<authentication mode="Forms" />

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

删除它:

<sessionState timeout="1500"></sessionState>

答案 1 :(得分:1)

我知道这个问题已经过时了,但我通过向web.config添加机器密钥来解决它。

您可以为您使用的.NET版本生成一个机器密钥,并在身份验证部分(如附加图像)之后将其添加到web.config中。

machineKey added to the web.config