我正在设置一个基于自定义策略的授权框架,其中将有一组业务规则来授权当前登录用户。但是,目前这个框架总是以401 未授权
结束。
以下是我的代码:
public class MyAuthorizationRequirement : IAuthorizationRequirement
{
public MyAuthorizationRequirement()
{
}
}
public class MyAuthorizationHandler : AuthorizationHandler<MyAuthorizationRequirement>
{
public MyAuthorizationHandler()
{
}
protected override void Handle(AuthorizationContext context, MyAuthorizationRequirement requirement)
{
context.Succeed(requirement);
}
}
接下来在Startup.cs
文件中进行以下操作。
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IAuthorizationHandler, MyAuthorizationHandler>()
.AddAuthorization(options =>
{
options.AddPolicy("MyAuthorization",
policy => policy.Requirements.Add(new MyAuthorizationRequirement()));
});
}
这是我在我的HomeController
(MVC 6)中使用它的方式。
[Authorize(Policy = "MyAuthorization")]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
当我不加Authorize
属性时,Index视图可以正常渲染。但是,当我加上Authorize
属性时,我只能收到空白视图。当我检查开发者工具(网络)时,我得到了以下幕后细节。
Request URL:http://localhost:51129/
Request Method:GET
Status Code:401 Unauthorized
Remote Address:[::1]:51129
我的需求和处理程序类的构造函数断点被触发,但是Handler
类的Handle
方法和Controller
类的Index
方法的断点从未被触发。
身份验证中间件
吗? - adem caglin