這一題研究很難,網路上的文章比較雜亂,我自己是看了很多不斷嘗試才成功,

當我講解給同事聽時,同事說,怎麼這麼簡單,我說,因為我消化過了.XD

廢話不多說.馬上開始

 

    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
    public class AuthorizeAttribute : TypeFilterAttribute
    {
       public AuthorizeAttribute(string PolicyName , string PolicyCode , int ActionLevel)
       : base(typeof(AuthorizeActionFilter))
       {
           Arguments = new object[] { PolicyName, PolicyCode, ActionLevel };
       }
    }

 

 

首先我們得先為Authorize這個Attribute來做些設定,相關參數請參考MSDN我就不多說了,

秉持我的原則,不是來看我的文章照抄就一定會成功,

我都只說大概,給方向,大然大家都複製貼上就好了,

我很討厭大家不查資訊不看書不研究!!我很討厭大家不查資訊不看書不研究!!我很討厭大家不查資訊不看書不研究!!   只是複製貼上!!

首先我們設定好這個Attribute可以傳入三個參數

(string PolicyName , string PolicyCode , int ActionLevel)

很明顯的我要做的就是權限管控,這部分怎麼設計就依照你的習慣,

我這邊的範例就是權限名稱,權限碼,還有權限等級(GRUD)之類的,

所以我們可以在Controller或是Action上方就可以加入

[Authorize("文章權限","Art001",1)]

而在

Arguments = new object[] { PolicyName, PolicyCode, ActionLevel };

這一行就是我們準備把這些參數傳到

public class AuthorizeActionFilter : IAuthorizationFilter

然後別忘記去Startup.cs去註冊,你要註冊成全域或是有下Attribute的進來檢查,

就是看各自的需求了,

還是那句話,我只挑出重點說,我只會給你魚桿,你要自己去釣魚,相關重點字都有了

然後以上的程式碼是.NET Core 2.1 我不保證2.2 3.1 Net5 是不是還是這樣寫,

但是觀念大致上就是這樣

大家加油!

 

ps.現在po文璋有夠難用!!!! 

 

文章標籤
全站熱搜
創作者介紹
創作者 baechang 的頭像
baechang

翁百璋與大泡泡的奇幻旅程

baechang 發表在 痞客邦 留言(0) 人氣(81)