私の質問は、AuthorizeCoreメソッドはどのように機能するのですか?
たとえば、カスタムのAuthorize属性を作成したい場合、多くのプログラマーがこのコードを使用していることがわかりました。
var isAuthorized = base.AuthorizeCore(httpContext);
if (!isAuthorized)
{
return false;
}
そして彼らは彼ら自身のコードを書きます。
したがって、このコードが果たす役割は何であり、フォーム認証で使用するようにカスタマイズした場合、メソッドは管理者やコンピューター管理で作成された他のユーザーなどのWindowsユーザーのみをチェックします。
また、これを見つけました code しかし、開発者がユーザーをセッションのみではなくCookieとセッションに保存した理由がわかりません。
In PHP以前は、ユーザーをセッションにのみ保存し、ユーザーがセッションに存在するかどうかを確認していました。
これはオープンソースであり、コードは次の場所にあります。
https://github.com/aspnet/AspNetWebStack/blob/master/src/System.Web.Mvc/AuthorizeAttribute.cs
そしてここに特定の方法:
// This method must be thread-safe since it is called by the thread-safe OnCacheAuthorization() method.
protected virtual bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext == null)
{
throw new ArgumentNullException("httpContext");
}
IPrincipal user = httpContext.User;
if (!user.Identity.IsAuthenticated)
{
return false;
}
if (_usersSplit.Length > 0 && !_usersSplit.Contains(user.Identity.Name, StringComparer.OrdinalIgnoreCase))
{
return false;
}
if (_rolesSplit.Length > 0 && !_rolesSplit.Any(user.IsInRole))
{
return false;
}
return true;
}
お役に立てば幸いです。