在jhipster中使用ROLES?

时间:2015-09-07 10:43:49

标签: spring-security jhipster user-roles

我尝试在jhipster中添加和更改角色。首先,我只是尝试将一个用例的角色从用户更改为admin。然后我测试了它,即使角色是ROLE_ADMIN,用户也可以添加员工,所以它没有改变任何东西。

我还添加了一个名为MANAGER的新角色。我编辑了AuthoritiesConstants.java并为JHI_AUTHORITY-table添加了新角色。我应该做些别的事还是这足以让它发挥作用?

state('employee.new', {
            parent: 'employee',
            url: '/new',
            data: {
                roles: ['ROLE_ADMIN'],
            },
            onEnter: ['$stateParams', '$state', '$modal', function($stateParams, $state, $modal) {
                $modal.open({
                    templateUrl: 'scripts/app/entities/employee/employee-dialog.html',
                    controller: 'EmployeeDialogController',
                    size: 'lg',
                    resolve: {
                        entity: function () {
                            return {nameFirst: null, nameLast: null, taxNumber: null, isFinnish: null, finnishSOTU: null, valtticard: null, birthDate: null, isContactPerson: null, isTiedonantaja: null, cOTARKENNE: null, id: null};
                        }
                    }
                }).result.then(function(result) {
                    $state.go('employee', null, { reload: true });
                }, function() {
                    $state.go('employee');
                })
            }]
        })

6 个答案:

答案 0 :(得分:13)

编辑以下6个文件以包含/排除块中指定的代码以添加/删除角色(以ROLE_MANAGER为例)

  1. AuthoritiesConstants.java(在java中使用的常量)

      

    public static final String MANAGER =“ROLE_MANAGER”;

  2. src / main / resources / config / liquibase / authorities.csv(适当的液体基础更新)

      

    ROLE_MANAGER

  3. src / main / resources / config / liquibase / users.csv(添加用户名:manager with password:user)

      

    5;管理器; $ 2A $ 10 $ VEjxo0jq2YG9Rbk2HmX9S.k1uZBGYUHdUcid3g / vfiEl7lwWgOH / K;管理;管理;管理器@本地;真;恩;系统

  4. src / main / resources / config / liquibase / users_authorities.csv(另一个适当的液体基础更新)

      

    5; ROLE_MANAGER

  5. src / main / webapp / app / admin / user-management / user-management.controller.js(角色可在JavaScript中使用)

      

    $ scope.authorities = [“ROLE_USER”,“ROLE_ADMIN”,“ROLE_MANAGER”];

  6. src / main / webapp / app / admin / user-management / user-management-dialog.controller.js(可在JavaScript中使用角色)

      

    $ scope.authorities = [“ROLE_USER”,“ROLE_ADMIN”,“ROLE_MANAGER”];

  7. 一切就绪后重新启动服务器,并在应用程序启动后仔细检查JHI_AUTHORITY和JHI_USER_AUTHORITY表,以便新的ROLE_MANAGER存在。使用用户名登录系统:'manager'和密码:'user'。

答案 1 :(得分:1)

您必须将新角色插入JHI_AUTHORITY表,然后将此角色授予JHI_USER_AUTHORITY表中的某些用户。这意味着如果您重新创建数据库,则更新authorities.csv和users_authorities.csv文件(例如,如果您使用H2)。

在客户端,只需将新角色添加到州定义的角色属性中。

答案 2 :(得分:1)

我找到了一种最简单的方法:

  1. 通过更改以下内容,从.gradle文件(在我的情况下为App> gradle> profile_dev.gradle)中禁用liquibase:

    def profiles ='dev,no-liquibase' // if(project.hasProperty('no-liquibase')){ // profiles + =',no-liquibase' //}

  2. 现在更改src / main / webapp / scripts / app / admin / user-management / user-management.controller.js以添加您的角色。

    $ scope.authorities = [“ROLE_USER”,“ROLE_ADMIN”,“YOUR_ROLE”];

  3. src / main / webapp / scripts / app / admin / user-management / user-management-dialog.controller.js

    $ scope.authorities = [“ROLE_USER”,“ROLE_ADMIN”,“YOUR_ROLE”];

  4. 最后在数据库中的“jhi_authority”表的“name”列中添加“YOUR_ROLE”并保存。现在重新启动应用程序,您将能够使用新创建的角色创建用户。

答案 3 :(得分:0)

经过上述指示,我得到了:

ERROR [...]f.config.liquibase.AsyncSpringLiquibase  : Liquibase could not start correctly, your database is NOT ready: Validation Failed:
[...]

为避免这种情况,请运行

./mvnw liquibase:clearCheckSums

具有新角色的用户无法访问帐户设置,因此您必须添加新角色

/src/main/webapp/app/account/password/password.state.js
/src/main/webapp/app/account/sessions/sessions.state.js
/src/main/webapp/app/account/settings/settings.state.js

完整说明: https://codefitter2.blogspot.com/2016/11/how-to-create-new-role-in-jhipster.html

答案 4 :(得分:0)

从@Constantin Zagorsky那里拿出一片叶子是有效的步骤。

  1. AuthoritiesConstants.java(在java中使用的常量)
  2.   

    public static final String MANAGER =" ROLE_MANAGER";

    2. src/main/resources/config/liquibase/authorities.csv(正确的liquibase更新)[这不会运行。但与DB保持同步非常重要]

      

    ROLE_MANAGER

    1. 更新数据库 [重要,因为liquibase不会获取权限中的更改,步骤2中的csv]

      insert into jhi_authority values ('ROLE_MANAGER');

    2. src/main/webapp/app/admin/user-management/user-management.controller.js(用于在JavaScript中提供的角色)

    3.   

      $ scope.authorities = [" ROLE_USER"," ROLE_ADMIN"," ROLE_MANAGER"];

      1. src/main/webapp/app/admin/user-management/user-management-dialog.controller.js(用于在JavaScript中提供的角色)
      2.   

        $ scope.authorities = [" ROLE_USER"," ROLE_ADMIN"," ROLE_MANAGER"];

        1. 修改UserService.java中的公共用户createUser(ManagedUserVM managedUserVM)方法(非常重要) 修改默认密码生成逻辑
        2.   

          //注释默认密码生成。在我的情况下,我做了默认   //用户与userid相同

               

          // String encryptedPassword =   passwordEncoder.encode(RandomUtil.generatePassword());           String encryptedPassword = passwordEncoder.encode(managedUserVM.getLogin());

          1. 以管理员身份登录应用程序
          2. 添加具有新角色的新用户。默认密码与用户名相同。

答案 5 :(得分:0)

在JHipster 6中,csv文件名为authority.csv。因此,请按照以前的帖子中的说明AuthoritiesConstants.java更改此文件。

enter image description here