3
我有一個自定義授權過濾器,用於檢查保存在數據庫中的令牌的API。所以像這樣的如何在Asp.Net核心自定義授權過濾器中返回未授權
override public void OnAuthorization(AuthorizationContext context)
{
if (!context.HttpContext.Request.Headers.Keys.Contains("X-CustomToken"))
{
context.HttpContext.Response.StatusCode = 401; //Unauthorized
return;
}
var headerToken = context.HttpContext.Request.Headers
.Where(a => a.Key.ToLower() == "x-customtoken").FirstOrDefault();
var company= _repository.GetCompanyByToken(headerToken.Value);
if (company == null)
{
context.Result = new HttpStatusCodeResult(401);
return;
}
_myFactory.SetCurrentCompany(company);
}
問題是,正如我在這裏問其他問題讀過,它像它的前端控制器重定向到登錄頁面。我通常閱讀的解決方案是完全覆蓋此行爲。不過,我的項目在同一個解決方案中有一個前端和一個API,所以我只需要在使用我的自定義屬性時覆蓋它。
謝謝
我很欣賞答案,但它並不能真正解決問題。那麼你應該在授權過濾器中做什麼呢? –
我正在閱讀這個主題https://github.com/aspnet/Mvc/issues/4233,似乎他們實際上打算刪除RC2上的屬性 –
JWT中間件處理身份驗證,而不是授權,這是操作的目標後。我正在尋找相同的內容,但找不到可行的解決方案來處理.NET Core中的授權 – Keith