Servicestack 4.5.6破坏了HasRole和HasPermission

时间:2017-01-31 18:16:12

标签: permissions servicestack

我在某处丢失了一个重大改变 - 我今天从一个相当旧的版本(4.0.x)升级了ServiceStack,并在HasRole和HasPermission上找到了类型为IAuthRepository的新参数。我的项目没有使用IAuthRepository,因此注入的AuthRepo返回null。当我在下面的HasRole行上设置断点时,我可以看到会话变量的Roles属性中的字符串,但HasRole()返回false。

我的所有RequiresRole,RequiresAnyRole也都失败了,好像我的服务没有定义角色(但我可以在session.Roles变量中看到它们)。

waveView

1 个答案:

答案 0 :(得分:3)

重构AuthUserSession以使用IAuthRepository(如果存在)。我们还预计会填充UserAuthId,但仅在IAuthRepository存在时才需要这样做,验证检查已移至this commit中需要的时间}。

您可以升级到包含此更改的v4.5.7 on MyGet,也可以覆盖客户用户会话类中的HasRole,例如:

public class DVAuthUserSession : AuthUserSession
{
    public override bool HasPermission(string permission, IAuthRepository authRepo) =>
        this.Permissions != null && this.Permissions.Contains(permission);

    public override bool HasRole(string role, IAuthRepository authRepo) =>
        this.Roles != null && this.Roles.Contains(role);
}