這一題研究很難,網路上的文章比較雜亂,我自己是看了很多不斷嘗試才成功,
當我講解給同事聽時,同事說,怎麼這麼簡單,我說,因為我消化過了.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文璋有夠難用!!!!
