7

.net の特定のロールへのメソッドへのアクセスを制御する方法はありますか? お気に入り

class A
{
    //should only be called by Admins**
    public void Method1() { }

    //should only be called by Admins and PM's** 
    public void Method2() { }
}

ユーザー名を取得するためだけに Windows 認証を使用しています。ユーザーの役割は別のアプリケーションで管理されています。属性で可能だと思いますが、どうすればよいかわかりません

4

3 に答える 3

3

可能であれば、asp.net と AzMan を認証として使用する Web プロジェクトで使用しました。

コード アクセス セキュリティをご覧ください。

メモリから、私たちのメソッドはすべて次のように見えました

[Permission(SecurityAction.Demand, "Permission")]
public void Method1

かなり時間が経っているので、実際には 100% 正しいとは限りません。

また、保護をこのレベルに下げてタスク指向のアクセス許可アプローチを検討する場合は、ロールベースのアクセス許可よりもはるかに柔軟であるため、強くお勧めします。

于 2012-09-25T03:36:07.817 に答える
1

これは次のように行うことができます。

class A 
{     
    //should only be called by Admins**     
    [PrincipalPermission(SecurityAction.Demand, Role="Admin")] 
    public void Method1() 
    { 
    }      

    //should only be called by Admins and PM's**      
    [PrincipalPermission(SecurityAction.Demand, Role="Admin")] 
    [PrincipalPermission(SecurityAction.Demand, Role="PM")] 
    public void Method2() 
    { 
    } 
} 

これを行うThread.CurrentPrincipalには、必要なロールを持つプリンシパルに設定する必要があります。たとえばroleManager、ASP.NET アプリケーションで有効にすると、構成済みの RoleProvider からの役割を持つThread.CurrentPrincipalに設定されます。RolePrincipal詳細については、この MSDN の記事を参照してください。

于 2012-09-25T08:31:12.193 に答える
0

カスタム検証を使用してそれを行うことができます。

1-ログインIDをパラメーターとして受け取り、ビットの形式でロールを返す別のパブリッククラスでメソッドを作成します。

2- 必要なクラスの page_Load イベントでこのメソッドを呼び出し、返されたビットをビューステートに保存します。

3-ロールビットに基づいて必要なメソッドを検証します。

于 2012-09-25T04:17:54.063 に答える