0

我为我的项目创建了 2 个自定义角色。我想在注册过程中为用户分配一个角色。如何在注册期间默认为用户分配角色。

另外,如果我有 2 个不同的角色,如何创建 2 个注册表单。对于不同类型的角色,我需要 2 种类型的注册。

4

1 回答 1

1

save您的实现方法中UserServicePlugin,您可以在创建用户时添加角色。例如,假设您有一个名为User实现 DeadboltSubject接口的模型,

@Override
public Object save(final AuthUser authUser)
{
    final boolean isExistingUser = User.existsByAuthUserIdentity(authUser);
    Long id = null;
    if (!isExistingUser)
    {
        User user = User.create(authUser);
        id = user.id;

        user.giveRole("some role name");
    }
    return id;
}

giveRole方法是这样的。

public void giveRole(String roleName)
{
    SecurityRole role = SecurityRole.findByRoleName(roleName);
    if (!roles.contains(role))
    {
        roles = new ArrayList<>(roles);
        roles.add(role);
        update();
        Ebean.saveAssociation(this, "roles");
    }
}

这假设您使用的是 Ebean 和 Java,但如果您使用的是 Scala 或其他数据库工具,则机制是相同的。

为了在用户创建时分配不同的角色,请将分配角色的位从save方法中移出(例如)进入这些注册所通过的控制器方法。

于 2016-05-24T07:29:58.510 回答