如何忽略用户尚未提供任何令牌。 ASP.NET CORE授权

时间:2019-04-16 08:46:53

标签: asp.net security jwt core

我正在使用ASP.NET CORE 2.2授权。 这里。 https://docs.microsoft.com/en-us/aspnet/core/security/authorization/resourcebased?view=aspnetcore-2.2


我使用策略来验证JWT,但是如果用户未提供任何令牌,则需要忽略验证。
如果用户提供了任何令牌,它将通过我的政策进行验证。


这样的逻辑:
标头中是否有令牌,例如Authorization = Bearer xxxx.xxx.xxx
然后政策将验证此令牌

但是,如果关于授权的标头中没有任何内容,例如Authorization = Beaer或排除Authorization
然后验证将绕过策略。


我现在使用IAuthorizationFilter解决,
并使用

手动验证令牌

JwtSecurityTokenHandler处理程序=新的JwtSecurityTokenHandler();

handler.ValidateToken(tokenValue,tokenValidationParameters,outvar validatedToken);


但当令牌无效时,JwtSecurityTokenHandler.ValidateToken将获得异常。
即使此令牌已过期也将获得异常。
据我所知,异常将消耗更多的服务器资源。

有人可以提供一种完美的解决方案吗?

0 个答案:

没有答案