わかりました、ログイン ページで使用される認証を割り当てられました。私はかなり長い間これに取り組んできましたが、それをクリーンアップすることにしました。私が直面した問題は、例外がスローされず、エラーが生成されず、すべて問題ないように見えるが、関数を使用しようとすると、望ましくない結果が返されるという問題の 1 つです。
私が使用したコードは、このページのコードと非常によく似ています。
http://msdn.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx
プロジェクトでデモのコードを使用しました。
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
username,
DateTime.Now,
DateTime.Now.AddMinutes(30),
isPersistent,
userData,
FormsAuthentication.FormsCookiePath);
// Encrypt the ticket.
string encTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie myCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket)
// Create the cookie.
Response.Cookies.Add(myCookie);
したがって、ログインすると、すべてが機能し、以下のコードは true と評価されます。
ただし、いずれかのバージョンを使用して myCookie にサブキーを含めたい場合:
myCookie.Values.Add("userName", "patrick"); //version 1
myCookie.Values["userName"] = "patrick"; //version 2
次に、Cookie コレクションに追加します。
Response.Cookies.Add(myCookie);
ログイン後にページを更新します。
//This always set to false even after successful log on
HttpContext.Current.User.Identity.IsAuthenticated;
理由がわからない!
暗号化値を httpcookie にすぐに追加する必要がない何かをしたかったのです。
//IsAuthenticated doesn't work = false
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormCookieName);
cookie.Values.Add("encryptTicket", encTicket);
サブキーの追加がまったく機能しないのは奇妙です。そして、チケットを機能させるために、チケットを暗号化する必要があります。つまり、 IsAuthenticated は、ログインして認証されているかどうかにかかわらず、常に false です。これで何が起こっているのか説明できる人はいますか?私は実用的な解決策を持っていますが、どんな洞察も役に立ちます。