我試過爲我的項目實現ASP.NET基於角色的授權,但我從未發現cookie保存在客戶端瀏覽器中。我嘗試了一些測試代碼一樣,用於緩存RolePrincipal的Cookie文本的長度始終大於4096
還有在這個如此簡單的RolePrincipal對象中沒有的角色和Roles.CookieProtectionValue設置爲「無」。然而,text1的長度是4,688,大於4,096,因此無法將cookie推入客戶端瀏覽器。
它沒有任何意義,否則無法使用cookie來緩存角色。
它有什麼問題?
感謝
這裏的相關章節的web.config
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" name=".TestAUTH"/>
</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="true" cookieName=".TestROLE" cookieProtection="None" cacheRolesInCookie="true" cookieTimeout="30" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="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>
檢查這個帖子http://stackoverflow.com/questions/836043/does-the-asp-net-rolemanager-really-cache-the-roles-for-a-user-in- a-cookie-if-so你不應該手動做這個讓.net爲你排序 – bUKaneer
謝謝!我不想手動執行此操作,但在我調用IsInRole和GetRolesForUser後,我無法在客戶端瀏覽器中查看角色的Cookie,因此我做了一些測試,如示例代碼,我認爲我對您分享的帖子有類似的設置,只是我無法獲取生成的cookie ...這很奇怪 – Johnny
你可以發佈你的web.config有關會員資格的部分 - 很高興再次檢查它。 – bUKaneer