[Authorize] public ContentResult Index2() { return Content("驗證通過了"); }
經常能夠看到某個Controler下的Action通過這個標簽進行登錄權限狀態的校驗,否則該Action不執行。但是滿足什么條件才能通過Authorize這個過濾器的校驗呢?答案:↓
public WebApiApplication() { PostAuthenticateRequest += WebApiApplication_PostAuthenticateRequest; } /// <summary> /// 獲取到了用戶的身份信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void WebApiApplication_PostAuthenticateRequest(object sender, EventArgs e) { //身份驗證邏輯 //關鍵代碼 HttpContext.Current.User = new MyUser() { code = "admin", name = "admin" }; }
在Global.asax中添加如下代碼即可。意思就是在application管道事件中觸發了“獲取到了用戶身份信息”的事件里,獲取用戶身份信息並進行校驗后,給HttpContext.Current.User賦值即可。需要注意的是,MyUser需要實現IPrincipal接口。
感悟:
天天都在談論各種高深的技術、各種裝逼,最簡單的基本應用都不知道,代碼跟了半天才找到,問題是問了一圈都不知道,哎……