8

何らかの理由で、認証 Cookie の UserData プロパティが空です。コードは次のとおりです。

var authCookie = FormsAuthentication.GetAuthCookie(userName, rememberUser.Checked);
// Get the FormsAuthenticationTicket out of the encrypted cookie
var ticket = FormsAuthentication.Decrypt(authCookie.Value);
// Create a new FormsAuthenticationTicket that includes our custom User Data
var newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, ticket.IsPersistent, "userData");
// Update the authCookie's Value to use the encrypted version of newTicket
authCookie.Value = FormsAuthentication.Encrypt(newTicket);
// Manually add the authCookie to the Cookies collection
Response.Cookies.Add(authCookie);
FormsAuthentication.RedirectFromLoginPage(userName, rememberUser.Checked);

これが私がそれにアクセスしようとする方法です:

if (HttpContext.Current.Request.IsAuthenticated )
{
    var authCookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
    if (authCookie != null)
    {
        var authTicket = FormsAuthentication.Decrypt(authCookie.Value);
        string data = authTicket.UserData;
        // data is empty !!!
    }
}
4

4 に答える 4

7

RedictFromLoginPageあなたのクッキーを上書きします。この行を削除し、手動でリダイレクトします ( Response.Redirect)。

于 2013-05-16T18:43:06.450 に答える
3

これは、私が数日前に回答した同様の回答です。

https://stackoverflow.com/a/16365000/296861

FormsAuthenticationTicketを自分で作成した場合、FormsAuthentication.SetAuthCookieまたはFormsAuthentication.RedirectFromLoginPageは使用できません。

于 2013-05-16T18:47:58.553 に答える
0

あなたは同じチュートリアルを行っていたようです...私の場合、同じ問題が発生しました..それはWeb構成エラーでした..

 <authentication mode="Forms">
    <forms slidingExpiration="true" timeout="60" cookieless="UseUri"/>
  </authentication>

Web構成に cookieless="UseUri" がある場合は削除してください..私の場合は機能します

于 2014-08-24T19:11:22.523 に答える