从http上下文中获取服务栈角色



我一直在使用以下授权过滤器hangfire链接到ServiceStack授权:

public class HangFireAuthorizationFilter : IDashboardAuthorizationFilter
{
public bool Authorize(DashboardContext context)
{
if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Development")
{
return true;
}
var coreContext = context.GetHttpContext();
var httpContext = coreContext.ToRequest();
var session = httpContext.GetSession();
if (session != null && session.IsAuthenticated && session.Roles != null && session.Roles.Contains("Admin"))
{
return true;
}
return false;
}
}

context.GetHttpContext()返回DefaultHttpContext。会话具有正确的用户名和ID,但不包含用户角色。

我在这个项目上使用内置在login.html中的ServiceStack凭据登录。在我的其他项目中,我使用JWT认证,所以我认为这可能是为什么它现在不起作用。

使用凭据验证时如何从上下文中获取用户角色?

编辑:

在数据库中查看保存的会话,我也可以看到它没有角色"roles":[]。我正在使用不同的角色表,并且可以确认该用户有一个具有Admin角色的条目。我尝试手动添加角色到用户认证表列,但没有改变任何东西。

使用HasRole()验证用户是否在角色中,例如:

return session.HasRole(role, httpContext.TryResolve<IAuthRepository>());

最新更新