我想重新創建我的cookie通常由FormsAuthentication.SetAuthCookie()生成的內容以及webconfig中的內容。我在做什麼我的FormsAuthenticationTicket錯誤?
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" protection="All" timeout="20160" name=".ASPXAUTH" path="/" requireSSL="false" slidingExpiration="false" defaultUrl="default.aspx" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/>
</authentication>
不過,我想沿着這樣,據我瞭解我必須使自己的FormsAuthenticationTicket添加此數據(或在SetAuthCookie將用戶名合併這一切,做分裂)發送一個更多的數據塊。
所以我試圖把它作爲安全(或者更安全),就像它從webconfig生成的一樣,具有與從webconfig生成的值相同的值。
因此,這是我迄今爲止
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, "chobo2", DateTime.Now, DateTime.Now.AddYears(10), true, "test");
string encTicket = FormsAuthentication.Encrypt(ticket);
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
但是我現在還不能確定它是什麼用。它使用webconfig中的東西嗎?由於它不要求cookieName或超時。
當我通過web開發人員查看此cookie時,它說它不安全,並且在會話結束時過期。
當我看着從webconfig生成的一個到期日像10月12日,仍然說不安全(猜測它是指SSL)。
此外,我仍然對userData感到困惑。我如何添加我稍後獲取此值?如何添加更多數據然後再添加一次數據?
我是否總是必須解密(即調用解密方法)來解密cookie或自動執行該操作。
cookie默認使用哪種加密方式?
謝謝
嗯好吧,那麼在新的FormsAuthenticationTicket()票證中做什麼呢?就像我設置過期時間一樣,它什麼都不做。那麼這是什麼東西? – chobo2 2009-09-29 05:17:34
我認爲你把cookie和票證混淆了。票證是管理客戶端和服務器之間已驗證會話狀態的事情,Cookie僅僅是將狀態存儲在客戶端上的方式。 Cookie到期時間將決定客戶端上cookie何時到期。票據到期時間將決定服務器*上的票據何時到期*。 在服務器上詢問票據設置以確定經過身份驗證的會話的有效性,並將適當的主體/身份附加到當前正在執行的請求。 – Neal 2009-09-29 20:45:25
那麼如果我希望用戶保持認證2周的話會發生什麼?我該怎麼設置? – chobo2 2009-09-29 22:22:56