2013-12-13 51 views
4

如何在asp.net中關閉表單身份驗證mvc.I具有註冊,登錄和忘記密碼頁面,用於輸入web應用程序。 最初我asp.net mvc中的表單超時問題mvc

我目前託管我的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

MSDN:一個有效的身份驗證cookie,如果提出要求,並

滑動到期重置過期時間超過半超時間隔已過。如果cookie過期,用戶必須重新進行身份驗證。根據配置的超時值,將SlidingExpiration屬性設置爲false可以通過限制身份驗證Cookie的有效時間來提高應用程序的安全性。

remove從配置

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

此屬性,並替換:

<authentication mode="Forms" /> 

也增加了會話超時或刪除默認:

刪除此:

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

三江源查希爾·艾哈邁德的答覆:) 當我刪除它,之後我在網上託管應用程序,我不能登錄到網頁,它會打開另一個彈出說:「需要身份驗證」。 – gs11111

+0

我已經更新了答案,現在可能會更清楚 –

+0

我也試過這個,它在一段時間後不會停止重定向到logon.aspx :( – gs11111

1

我知道問題是舊的,但我解決了它通過添加一個機器密鑰到web.config

您可以爲您使用的.NET版本生成一個machinekey並將其添加到web.config中在附加圖像之類的認證部分之後。

machineKey added to the web.config