[AspNetCore]CookieAuthentication禁用自動跳轉到登錄頁


就是API的使用,記錄一下

要干嘛?

一般情況下,配置基於Cookie的身份驗證和鑒權,這樣寫就夠了。

當用戶訪問被[Authorize]描述的Action的時候,若未登錄,會直接跳轉到 /account/login?returnUrl=xxx 頁面上,在MVC中,這個實現非常好,拿來即用,基本上不用添加自己的邏輯。

services
      .AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
      .AddCookie();

如果是基於webapi的前后分離項目,當前端請求接口是,若鑒權失敗,最好返回原始響應,因為大部分前端框架已經封裝好了基於標准響應異常處理的邏輯。

還是上面的頁面,若用戶未登錄,我們希望直接響應一個類似{status: 401,msg: 'xxx'}這樣的結果,而不是跳轉到登錄頁面。

怎么做?

很簡單,但因為是第一次處理這樣的需求,用了很長時間才找到對應的配置方式,這里備忘一下:

services
      .AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
      .AddCookie(options =>
      {
          options.Events.OnRedirectToLogin = context =>
          {
              context.Response.StatusCode = StatusCodes.Status401Unauthorized;
              return Task.CompletedTask;
          };
      });

這里option.Events的事件蠻多的,沒有一一研究,已經滿足現在的要求,其他的等用到的時候再說吧。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM