国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - asp.net core mvc權限控制:在視圖中控制操作權限

asp.net core mvc權限控制:在視圖中控制操作權限

2021-12-24 13:29dxp_909 ASP.NET教程

本文主要介紹了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)判斷權限,然后控制按鈕是否顯示

?
1
2
3
4
@if(HttpContext.User.HasClaim("User","Delete"))
{
<input type='button' value="刪除"/>
}

上面的代碼寫在視圖中,表示如果具有用戶的刪除權限,就顯示刪除按鈕。這種方式比如在所有需要驗證的地方,都按照這樣的格式去書寫。

2,借助于asp.net core mvc的新特性taghelper可以簡化第一種方式,至于什么是taghelper,以及它的作用這里就不再介紹,大家可以百度或谷歌搜索,這里直接介紹如何自定義權限驗證的taghelper。

?
1
<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)權限的時候才顯示,下面我們就來介紹如何實現這個taghelper。

1)首先我們定義一個類,派生自TagHelper類,并增加claim屬性定義,并增加ViewContext

?
1
2
3
4
5
6
7
8
9
class ClaimTagHelper:TagHelper
{
private const string ClaimAttributeName = "asp-claim";
    public ClaimTagHelper()
    {
    }
    [HtmlAttributeName(ClaimAttributeName)]
    public string Claim { get; set; }
}

2)我們的權限控制taghelper只運用于button,a,input的元素上,所有我們需要加上HtmlTargetElement的特性,代碼如下:

?
1
2
3
4
5
6
7
[HtmlTargetElement("a", Attributes = ClaimAttributeName)]
  [HtmlTargetElement("button", Attributes = ClaimAttributeName)]
  [HtmlTargetElement("input", Attributes = ClaimAttributeName, TagStructure = TagStructure.WithoutEndTag)]
  public class ClaimTagHelper: TagHelper
{
......
}

3)重寫TagHelper的Process方法,在方法中使用HttpContext.User.HasClaim進行權限判斷。在視圖中訪問HttpContext必須借助于ViewContext對象,所以我們需要在當前的TagHelper類中增加ViewContext引用,具體代碼如下:

?
1
2
3
4
5
6
7
8
9
public class ClaimTagHelper: TagHelper
{
.....
 
[HtmlAttributeNotBound]
    [ViewContext]
    public ViewContext ViewContext { get; set; }
.....
}

基本條件都具備了,然后就是Process實現,直接上代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public override void Process(TagHelperContext context, TagHelperOutput output)
    {
      if (string.IsNullOrEmpty(Claim))
      {
        return;
      }
      string[] claimData = Claim.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
      if (claimData.Length == 1)
      {
        if (!ViewContext.HttpContext.User.HasClaim(m => m.Type == claimData[0]))
        {
          //無權限
          output.SuppressOutput();
        }
      }
      else
      {
        if (!ViewContext.HttpContext.User.HasClaim(m => m.Type == claimData[0] && m.Value == claimData[1]))
        {
          //無權限
          output.SuppressOutput();
        }
      }
}

到這里就介紹完了,謝謝大家,如有不足之處,歡迎大家指導。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持服務器之家!

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: av在线一区二区三区 | 色香阁99久久精品久久久 | 日一区二区三区 | 久草青青 | 色爽 | 成av在线| 国内精品久久久久久久影视红豆 | 久久av网 | 蜜桃成人在线视频 | 日韩av中文 | 97色综合| 亚洲成人一区二区三区四区 | 色婷婷在线视频观看 | 亚洲 欧美 另类 综合 偷拍 | 丝袜美腿一区二区三区 | 性爽视频 | 激情视频在线观看 | 精品国产视频 | 极品粉嫩饱满一线天在线 | 黑人精品| 天天操天天干视频 | 亚洲成人精品在线 | 欧美黄页| 日韩高清国产一区在线 | 久久xxx| 日韩在线免费视频 | 成人在线视频免费观看 | 久久久久高清 | 久久久久久久一区 | 午夜网址 | 日韩视频专区 | 国产主播福利 | 黑人中文字幕一区二区三区 | 成人在线免费视频 | 日本久久网 | 中文字幕av在线 | 久久精品中文视频 | 欧美精三区欧美精三区 | 欧美日韩美女 | 亚洲国产精品无卡做爰天天 | 中文字幕不卡在线观看 |