2012-02-09 56 views
0

我在web.confi中的roleManager看起來像這樣。Cookie中的緩存角色不起作用 - ASP.NET

<roleManager enabled="true" 

    cacheRolesInCookie="true" 
    cookieName=".ASPR0LE3S" 
    cookieTimeout="115" 
    cookieSlidingExpiration="true" 
    cookieProtection="All" 
    createPersistentCookie="false" 
    defaultProvider="CustomizedRoleProvider">    

    <providers>     
    <add name="CustomizedRoleProvider" 
    type="System.Web.Security.SqlRoleProvider" 
    connectionStringName="MyConn" 
    applicationName="/MyApp"/>    
    </providers> 

</roleManager> 

我現在要做的就是將我的角色存儲在Cookie中。代碼假設存儲它,但是當我在FireFox中查看cookie時,名稱ASPR中沒有這樣的cookie ......可能是什麼問題?我錯過了什麼。

+0

要查看它們,您必須先登錄。你登錄了嗎? – Aristos 2012-02-09 19:10:00

+0

我登錄後無法看到它。但即使我沒有登錄,我仍然應該能夠看到它。我的猜測是,它永遠不會被創建。是否因爲我的角色太多而超出了尺寸限制?我不應該因爲它 – 2012-02-09 19:12:47

+0

是的,如果你使用太多角色的用戶可以避免,因爲cookie有限制,瀏覽器無法保存它,甚至崩潰。你也延遲了太多的頁面,也是不安全的。 – Aristos 2012-02-09 19:19:37

回答

-1

首先,緩存cookie上的角色並不是那麼安全,因爲某些人可能潛在竊取/操縱該信息並使用它們來更改角色。這裏有一個關於這個問題:當您存儲信息有關Cookie那麼這個信息是來回走在每次調用到您的網站,並添加額外的開銷

Can some hacker steal the cookie from a user and login with that name on a web site?

二。

如果您的角色太多,瀏覽器可能無法保存它們,或者其他cookie可能無法保存。在某些情況下,我從瀏覽器中看到奇怪的行爲,例如崩潰或白頁,因爲這個cookie達到了極限值

嘗試設置儘可能少的cookie信息。

有關Cookie限制一些更多的信息:
http://www.nczonline.net/blog/2008/05/17/browser-cookie-restrictions/
What are the current cookie limits in modern browsers?

在cookie中的角色將能夠查看他們的加密,在使用後已經被記錄在

+0

我不知道ASP.NET角色提供者在將角色存儲在單獨的cookie中時是如何工作的,但過時的建議是不將這些信息存儲在cookie中是過於通用的。考慮到正確的安全防範措施,可以通過許多方式來保護cookie免受中間人攻擊和劫持技術的侵害,因此不一定是壞主意。 – Chris 2012-02-10 06:22:15

+0

@Chris好的我接受你的觀點 - 這裏的問題是,如果你做好安全的加密,你會得到太大的cookie - 也許瀏覽器會拒絕它,並造成很大的開銷。所以如果你得到了那個你失去了另一個。 – Aristos 2012-02-10 06:26:29

+0

至少現在我的應用程序是本地的(在我們的網絡上),所以安全性不是問題+開銷。我有大約10個角色。 – 2012-02-10 11:51:44

0

docs

當Web.config文件中的CacheRolesInCookie屬性設置爲true時,角色信息爲每個用戶存儲在一個cookie中。當角色管理檢查用戶是否處於特定角色時,會在調用角色提供程序之前檢查角色Cookie,以檢查數據源處的角色列表。 Cookie會動態更新以緩存最近驗證的角色名稱。

在第一次嘗試檢查角色之前,這些角色將不會存儲在cookie中。您似乎很可能只是登錄並檢查cookie,而未執行任何可能導致角色提供者在數據源中查找用戶角色的操作。

+0

'cookie直到你第一次嘗試檢查一個角色'這到底意味着什麼?與登錄不同嗎?順便說一下,我後來看到cookie,但事實是我的應用程序很慢,這意味着它很可能根本不檢查cookie。 – 2012-02-10 11:52:32

0

如果你在.NET 4.5上,它不會工作,將不得不自己保存。請參閱示例代碼here