これは少し無知な質問かもしれませんが、私は mvc を初めて使用するので、申し訳ありません!
私はオタクディナー認証モデルを研究しましたが、私のアプリでは複雑な役割ベースの認証を行っています。だから私がすることはこれです:
void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e)
{
HttpCookie authCookie = HttpContext.Current.Request
.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
string encTicket = authCookie.Value;
if (!String.IsNullOrEmpty(encTicket))
{
FormsAuthenticationTicket ticket =
FormsAuthentication.Decrypt(encTicket);
CustomIdentity id = new CustomIdentity(ticket.Name);
GenericPrincipal prin = new GenericPrincipal(id, id.Roles);
HttpContext.Current.User = prin;
}
}
}
ログオン時に FormsAuth でユーザー名/パスを認証してから、Cookie を作成します。
ここでの問題は、カスタム ID を作成するたびに、ユーザーの役割についてデータベースにクエリを実行する必要があることです。これを回避する正しい方法はありますか、それともすべての着信要求で DB を照会するために正しいことをしていますか? 役割リストを Cookie などに保存する必要がありますか?
また、フォーム認証が認証を処理する方法のライフサイクル全体をよく理解していませんか? IFormsAuthentication
私はオタクディナーユーザーと同じデザインパターンを使用し、サインイン中に呼び出しFormsAuth.SignIn()
ます, メソッドFormsAuthentication.SetAuthCookie
を呼び出すのはいつmembershipservice.validateuser()
ですか?? また、認証 Cookie が設定されている場合、なぜ nerd dinner はチケットを作成し、それをリクエストに追加し、それを読み取ってPostAuthenticationRequest
どのユーザーであったかを確認します。チケット操作はセッションのようなものですか?
ありがとう!メリークリスマス!
更新:このリンクにより、フォーム認証チケットについて少し理解が深まりました。