3 回答

TA貢獻1834條經驗 獲得超8個贊
文檔中有一條重要說明可以解決此問題:
即使身份驗證失敗,也會調用授權處理程序。
在您的情況下,身份驗證失敗但您的IsParagemNotOnGoingHandler'HandleRequirementAsync仍在被調用。要解決此問題,您只需讓您的處理程序實現對丟失的聲明更具彈性。這是完整性的示例:
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, IsParagemNotOnGoingRequirement requirement)
{
if (!context.User.HasClaim(c => c.Type == ClaimTypes.PrimarySid))
return Task.CompletedTask;
...
}
Convert.ToInt32對于聲明的值不可轉換為int.

TA貢獻1845條經驗 獲得超8個贊
文檔中有一條重要說明可以解決此問題:
即使身份驗證失敗,也會調用授權處理程序。
在您的情況下,身份驗證失敗但您的IsParagemNotOnGoingHandler'HandleRequirementAsync仍在被調用。要解決此問題,您只需讓您的處理程序實現對丟失的聲明更具彈性。這是完整性的示例:
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, IsParagemNotOnGoingRequirement requirement)
{
if (!context.User.HasClaim(c => c.Type == ClaimTypes.PrimarySid))
return Task.CompletedTask;
...
}
Convert.ToInt32對于聲明的值不可轉換為int.

TA貢獻1893條經驗 獲得超10個贊
在您的 中AuthorizationHandler,您可以通過訪問屬性來檢查用戶是否已通過身份驗證,context.User.Identity.IsAuthenticated如下所示:
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, YourRequirementType requirement)
{
if (context.User.Identity == null || !context.User.Identity.IsAuthenticated)
{
_logger.LogDebug("Authorization Failed: User not authenticated.");
context.Fail(new AuthorizationFailureReason(this, $"User not authenticated"));
return Task.CompletedTask;
}
- 3 回答
- 0 關注
- 168 瀏覽
添加回答
舉報