【发布时间】:2019-05-02 15:05:43
【问题描述】:
按照此处的文档,我尝试实施基于策略的身份验证方案。 http://docs.asp.net/en/latest/security/authorization/policies.html#security-authorization-handler-example
我遇到了在我的自定义 AuthorizationHandler 上没有调用我的 Handle 方法的问题。 (这里不扔)。它还确实注入了当前在构造函数中的依赖项。
这里是 AuthorizationHandler 代码。
using WebAPIApplication.Services;
using Microsoft.AspNet.Authorization;
namespace WebAPIApplication.Auth
{
public class TokenAuthHandler : AuthorizationHandler<TokenRequirement>, IAuthorizationRequirement
{
private IAuthService _authService;
public TokenAuthHandler(IAuthService authService)
{
_authService = authService;
}
protected override void Handle(AuthorizationContext context, TokenRequirement requirement)
{
throw new Exception("Handle Reached");
}
}
public class TokenRequirement : IAuthorizationRequirement
{
public TokenRequirement()
{
}
}
}
在启动时我有
// Authorization
services.AddSingleton<IAuthorizationHandler, TokenAuthHandler>()
.AddAuthorization(options =>
{
options.AddPolicy("ValidToken",
policy => policy.Requirements.Add(new TokenRequirement()));
});
控制器方法是
// GET: api/values
[HttpGet, Authorize(Policy="ValidToken")]
public string Get()
{
return "test";
}
点击此端点不会返回任何内容,并且在
的控制台中有警告warn: Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker[0]
Authorization failed for the request at filter 'Microsoft.AspNet.Mvc.Filters.AuthorizeFilter'.
我能够成功命中没有该属性的其他端点。
求救, 杰克
【问题讨论】:
-
同样的问题。你有想过这个吗?
-
是的,我在下面回答,它符合您对 adem 评论的评论
标签: c# asp.net authorization asp.net-core