のようなものでこれを行うことができますPrincipalPermissionsAttribute
。Windows 認証や AzMan などを扱っている場合は、単純にユーザーを作成してロールを割り当て、アプリケーションにログインさせる (または現在ログインしているユーザー情報を使用する) ことができます。カスタム認証を使用する場合は、自分でロールを処理し、 のThread.CurrentPrincipal
ようなものを設定する必要がありますGenericPincipal
。次にPrincipalPermissionsAttribute
on メソッドを使用して、特定のロールを持つプリンシパルのみを確保し、メソッドを実行できます。例えば:
[PrincipalPermission(SecurityAction.Demand, Role = @"UserUpdater")]
public void UpdateUserName(string name)
{
//...
}
自分で承認を行いたい場合は、ユーザーを承認したら、次のようにプリンシパルを設定できます。
var identity = new GenericIdentity("Bill");
var roles = new[] { @"UserUpdater" };
var principal = new GenericPrincipal(identity, roles);
Thread.CurrentPrincipal = principal;
SecurityException
そのロールを持たないユーザーがメソッドを呼び出した場合に対処する必要があります。仮定は、他の何かが役割をチェックし、単にそのメソッドを実行しないということです...