gpt4 book ai didi

servicestack - 从 http 上下文获取服务堆栈角色

转载 作者:行者123 更新时间:2023-12-04 07:15:34 27 4
gpt4 key购买 nike

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

    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 . session 具有正确的用户名和 ID,但不包含用户角色。
我在这个项目中使用内置在 login.html 中的 ServiceStack 的凭据登录。在我的其他项目中,我使用的是 JWT 身份验证,所以我认为这可能是现在不起作用的原因。
使用凭据身份验证时,如何从上下文中获取用户角色?
编辑:
在保存的 session 中查看数据库我也可以看到它没有角色 "roles":[] .我正在使用不同的角色表,并且可以通过 Admin 确认此用户有一个条目。角色。我尝试将角色手动添加到用户身份验证表列,但这没有任何改变。

最佳答案

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

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

关于servicestack - 从 http 上下文获取服务堆栈角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68795145/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com