我想添加新用户注册时的角色和权限。我遇到了将会话角色和权限添加到数据库中的问题。ServiceStack添加角色和权限与自定义AuthUserSession
我写了一个自定义AuthUserSession和覆盖OnAuthenticated。
下面的代码使用AssignRolesService,这似乎是我需要的除了一个问题。当身份验证由Facebook身份验证提供程序会话处理时。用户身份名称为空,因此我无法调用该服务。
为了澄清,下面的所有代码片断都包含在:
public override void OnAuthenticated(IServiceBase authService, IAuthSession session,
IOAuthTokens tokens, Dictionary<string, string> authInfo)
这样的建议方式(从我发现SO /谷歌):
using (var assignRoles = authService.ResolveService<AssignRolesService>())
{
assignRoles.Post(new AssignRoles {
UserName = session.UserAuthName,
Roles = { RoleNames.Admin }
});
}
也试过,但它没有工作:
session.Roles.Add("user");
session.Permissions.Add("setup");
authService.SaveSession(session);
我唯一发现似乎工作,但似乎是一个破解是:
UserAuth ua = db.GetById<UserAuth>(session.UserAuthId);
ua.UserName = user.Email;
ua.Roles.Add("user");
ua.Permissions.Add("setup");
db.Save(ua);
您是否通过使用会话用户找到解决方案? –