【发布时间】:2017-05-28 17:27:38
【问题描述】:
我正在开发一个需要通过服务授权用户的网站。如果我使用 AuthorizeAttribute(将设置 User.Identities),我已经设法让 Windows 身份验证工作。我的计划是创建一个自定义中间件,为用户设置角色/声明,但 context.User 未在中间件中设置。 User.Identities 也不会在我不添加 AuthorizeAttribute 的控制器中设置。
我的目标是编写一个中间件,获取 windows 用户名并使用该用户名调用服务以获取用户有权访问的角色,然后为用户设置角色或声明。
public class RoleMiddleware
{
private readonly RequestDelegate _next;
public RoleMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
if (!rolesSet)
{
var result = _service.GetRoles(context.User.Identity.Name);
//set roles
//set claims
}
await _next.Invoke(context);
}
}
中间件是否是执行此操作的正确位置,我需要做什么才能以与在控制器中使用 AuthorizeAttribute 时相同的方式访问用户名?
【问题讨论】:
标签: asp.net-core asp.net-core-mvc .net-core