1

私のウェブサイトでユーザー権限(編集、読み取り、新規)を処理したいのですが、MyRoles ユーザー権限コードを持つ追加のパラメーターバイトを渡すことを考えています:0-読み取り専用、1-フルコントロール、2-編集および読み取り

では、どのようにかみそりのメソッドをオーバーライドHtml.ActionLinkしてそれを処理することができますか?私のメソッドはこの問題(ユーザー権限)を処理するための最良の方法ですか?

4

1 に答える 1

0

私の方法は、この問題を処理するための最良の方法ですか (ユーザー権限)?

いいえ、ロールをパラメーターとしてアクションに渡すと、ユーザーが好きなロールを渡すことができるため、セキュリティ上の欠陥が発生します。

これを行う正しい方法は、ロール プロバイダーを使用することです。ロールをユーザーに関連付けてから、特定のアクションにアクセスするためにユーザーが必要とするロールを定義します。

例えば:

[Authorize(Roles = "Readers")]
public ActionResult SomeAction() 
{
    // only users belonging to the readers role will be able to access this action
}

サーバー側を適切に保護したら、Razor ビューでアンカーなどを条件付きで表示/非表示にすることができます。

@if (User.IsInRole("Readers"))
{
    @Html.ActionLink("read the news", "SomeAction")
}

そして、これらの if を書かないようにするために、カスタム HTML ヘルパーを書くことができます:

@Html.RoleActionLink("read the news", "Some Action", "Readers")

既定のメンバーシップ プロバイダーとロール プロバイダーは既定の aspnetdb を使用しますが、もちろん、独自のデータを照会するためにカスタム プロバイダーを拡張または作成することもできます。

于 2012-08-17T21:22:11.790 に答える