承認タグは、ユーザーが承認されているかどうかをどのように判断しますか?
たとえば、ユーザーがログインして、Authorizeタグのあるビューに移動しようとした場合などです。ユーザーが許可されているかどうかをどのように判断しますか?データベースへのクエリとチェックを行いますか?
彼らが役割の承認を得てビューに行く場合はどうですか?メンバーシップロールテーブルをクエリしますか?
ASP.NETメンバーシップテーブルが重複するuserNameと見なすものがあるので、私はただ疑問に思っています。深刻なフィールドを使用して、どのユーザーが何であるかを判別し、ユーザーが同じ重複userNameを持つことができるようにしますが、それでもデータベース内で一意です。
これにより、すべてがUserIdを使用する代わりに「userName」を使用して検索を行うため、多くの.NETメンバーシップ関連のカスタムメソッドを作成する必要がありました。
だから私は今、これがAuthorizeタグの場合である可能性があるかどうか疑問に思っています。私はそれがどのように機能するのか見当がつかないので、.NETメンバーシップを使用していなかった場合のように、それがどのようにそれを決定するのか見当がつかないでしょう。
Authorize
タグは、ASP.NETのすべての組み込みメンバーシップチェックを使用します。独自のタグをロールするのは非常に簡単です。例えば:
public class MyAuthorize : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext == null) throw new ArgumentNullException("httpContext");
// Make sure the user is authenticated.
if (httpContext.User.Identity.IsAuthenticated == false) return false;
// Do you own custom stuff here
bool allow = CheckIfAllowedToAccessStuff();
return allow;
}
}
次に、カスタムチェックを使用する[MyAuthorize]
タグを使用できます。
ControllerActionInvoker 属性を解析し、資格情報を確認するときにOnAuthorization()
を呼び出します。
AuthorizationAttribute.OnAuthorization()
メソッドは、基本的にUser.Identity.IsAuthenticated
は本当かどうか。これは、FormsAuthenticationまたは使用している可能性のあるその他の認証スキームの機能を利用するだけです。