Spring security 在jhipster中使用角色?
我试图在jhipster中添加和更改角色。首先,我尝试将一个用例的角色从user改为admin。然后我测试了它,用户可以添加雇员,即使角色是ROLE_ADMIN,所以它没有改变任何东西 我还增加了一个新角色,叫经理。我编辑了AuthoritiesConstants.java,并将新角色添加到JHI_AUTHORITY-table中。我应该做些别的事情,还是这足以让它工作Spring security 在jhipster中使用角色?,spring-security,jhipster,user-roles,Spring Security,Jhipster,User Roles,我试图在jhipster中添加和更改角色。首先,我尝试将一个用例的角色从user改为admin。然后我测试了它,用户可以添加雇员,即使角色是ROLE_ADMIN,所以它没有改变任何东西 我还增加了一个新角色,叫经理。我编辑了AuthoritiesConstants.java,并将新角色添加到JHI_AUTHORITY-table中。我应该做些别的事情,还是这足以让它工作 state('employee.new', { parent: 'employee',
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');
})
}]
})
您必须在JHI_权限表中插入新角色,然后将此角色授予JHI_用户权限表中的某些用户。这意味着如果重新创建数据库(例如,如果使用H2),则更新authorities.csv和users_authorities.csv文件
在客户端,只需将新角色添加到状态定义的roles属性中。编辑以下6个文件,以包括/排除在块中指定的代码,以添加/删除角色(例如role\u MANAGER)
一切就绪后重新启动服务器,并在应用程序启动后再次检查JHI_权限和JHI_用户权限表,以确保新的角色管理器在其中。使用用户名:“经理”和密码“用户”登录系统。我找到了一种最简单的方法:
经过上述指示,我得到:
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
完整说明:
向@Constantin Zagorsky学习以下是有效的步骤
AuthoritiesConstants.java
(在java中使用的常量)src/main/resources/config/liquibase/authorities.csv
(适当的liquibase更新)[这将不会运行。但与DB保持同步很重要
职位经理
在jhi_权限值中插入('ROLE_MANAGER')代码>
src/main/webapp/app/admin/user management/user management.controller.js
(角色在JavaScript中可用)src/main/webapp/app/admin/user management/user management dialog.controller.js
(角色在JavaScript中可用)在JHipster 6中,csv文件名为
authority.csv
。因此,请按照前面文章中所述的AuthoritiesConstants.java
更改此文件
但如果我添加角色:['ROLE\u ADMIN'],这是否意味着ROLE\u用户不能转到employee.new?在我的例子中,它并没有以这种方式工作,用户也可以添加一个新员工,所以现在缺少了一些东西?我使用的是mySQL,我手动将新角色添加到db中。角色相互独立,拥有role_ADMIN的用户不必拥有role_user,这取决于您将两个角色授予同一用户。在您的状态中,如果您想授权具有这两个角色中的任何一个的用户访问此状态,您可以设置角色:['ROLE\u ADMIN','ROLE\u USER'],我的意思是我有角色:['ROLE\u ADMIN'],但仍然具有角色的用户可以去添加新员工,这些角色在我的情况下不起作用。您确定您的API返回了正确的角色吗,您是否已在浏览器控制台中进行了检查?角色:[“角色用户”]0:“角色用户”在登录时对此进行响应。我也遇到了同样的问题。分配给状态的角色不限制访问