3

コントローラの属性を使用してい[Authorize (Roles="yadda, yadda2")]ますが、ビューからアクセスできるかどうかを検出するための組み込みのメカニズムがあるかどうか疑問に思っていますか?

[Authorize (Roles="System Administrator, Administrator")]
public abstract class OperationsBaseContoller : BaseController
{
    // omitted
}

// some view
@if(HasAccessTo<OperationsBaseController>())
{
   <a href="#somewhereInOperations">Operations Action</a>
   <a href="#anotherInOps">Example</a>
   <a href="#oneMore">filler</a>
}

上記のようなものは、とにかくそれらに配信できないリンクをレンダリングすることを避けることができるように素晴らしいでしょう。ただし、これはメンテナンス/重複コードの悪夢のように思われるため、ビューに使用可能な役割のリストを再度表示したくありません。User.IsInRole("....")彼らが私たちに属性を与えた場合、彼らはビューからそれをチェックするための組み込みの方法も与えたと私は考えました。

そうでない場合(自分で見つけることができなかった場合)、私は自分で書きますが、潜在的なホイールの再発明を避けたかったのです。

4

1 に答える 1

5

これを正確に実現する便利な拡張メソッドがいくつかあります

Html.ActionAuthorized

Html.ActionLinkAuthorized

で公開

http://vivien-chevallier.com/Articles/create-an-authorized-action-link-extension-for-aspnet-mvc-3

この記事では、承認に基づいてアクションリンクを非表示または無効にできるように、承認に対応したアクションリンク拡張機能を作成する方法について説明します。

于 2013-01-28T17:15:08.897 に答える