この記事では主にasp.net core mvc権限制御、つまりビューでの操作権限の制御について紹介します。非常に優れた参考値です。以下のエディターで見てみましょう
アクセス許可を構成した後のアクセス許可の制御方法は、asp.net core mvc で提供されています。検証ロジックは自動的に実行されますが、場合によってはコードまたはビューで権限を手動で決定する必要がある場合があります。具体的な操作方法を紹介します。
現在のユーザーがコントローラー メソッドで特定の権限を持っているかどうかを確認したい場合は、HttpContext.User.HasClaim (string cliamtype, string cliamvalue) メソッドを直接使用して確認できます。このメソッドは bool 型を返し、true を返します。許可があることを示します。それ以外の場合は許可されていません。
ビューでは、特定のボタンまたはハイパーリンクの権限を制御する必要があることがよくあります。ボタンに権限がある場合は表示されますが、そうでない場合は非現実的です。では、どうすればそのような効果を達成できるのでしょうか?このメソッドは次のように紹介されます:
1. ビュー内で HttpContext.User.HasClaim (string cliamtype、string cliamvalue) を直接使用して権限を決定し、ボタンを表示するかどうかを制御します
@if(HttpContext.User.HasClaim("User","Delete")) { <input type='button' value="删除"/> }
上記のコードは view に記述されており、ユーザーが削除権限を持っている場合に削除ボタンが表示されることを示しています。このように、例えば検証が必要な箇所はすべてこの形式で記述されます。
2. 最初の方法は、asp.net core mvc の新機能である taghelper を使用して簡素化できます。taghelper の概要とその機能については、ここでは紹介しません。Baidu または で検索できます。 Google。権限検証用のタグヘルパーを定義する方法を直接紹介します。
<a asp-claim="goods,edit" asp-action="addgoods" asp-route-id="@goods.Id" class="btn-icon " title="编辑"> <i class="icon-common-edit icon-pencil"></i></a>
上記のコードは最終的な効果です。つまり、このハイパーリンクは、ユーザーがclaim(type=goods,value=edit)権限を持っている場合にのみ表示されます。このタグヘルパーを実装する方法を紹介します。
1) まず、TagHelper クラスから派生したクラスを定義し、クレーム属性定義を追加し、ViewContext を追加します
class ClaimTagHelper:TagHelper { private const string ClaimAttributeName = "asp-claim"; public ClaimTagHelper() { } [HtmlAttributeName(ClaimAttributeName)] public string Claim { get; set; } }
2) アクセス許可制御 taghelper は、以下にのみ適用されます。ボタン、a、入力要素、HtmlTargetElement を追加するために必要なすべての機能。コードは次のとおりです。
[HtmlTargetElement("a", Attributes = ClaimAttributeName)] [HtmlTargetElement("button", Attributes = ClaimAttributeName)] [HtmlTargetElement("input", Attributes = ClaimAttributeName, TagStructure = TagStructure.WithoutEndTag)] public class ClaimTagHelper: TagHelper { ...... }
3) TagHelper の Process メソッドを書き換えて、 HasClaimメソッドで許可判定を行います。ビュー内の HttpContext へのアクセスには ViewContext オブジェクトを使用する必要があるため、現在の TagHelper クラスに ViewContext 参照を追加する必要があります。具体的なコードは次のとおりです。
public class ClaimTagHelper: TagHelper { ..... [HtmlAttributeNotBound] [ViewContext] public ViewContext ViewContext { get; set; } ..... }
基本的な条件はすべて満たされています。次に、プロセスの実装です。
今のところはここまでです。不備がある場合は、ご指導をお願いします。
上記は、ビュー内の操作権限を制御するための asp.net core mvc 権限制御コード例の詳細な紹介です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。