【发布时间】:2013-09-03 08:24:16
【问题描述】:
我有一个自定义的自动化模型,我想用 Spring Security 来表示:
我有角色和权限的概念:
@Entity
public class User
...............
@ManyToMany
@Column
private Set<Role> roles;
@ManyToMany
@Column
private Set<Permission> permissions;
}
在我的自定义 UserdetailsService 中,我有一种干净的方式来加载角色,但我找不到任何方式和 spring-security 中与权限相关的任何组件:
public class BELUserDetailService implements UserDetailsService {
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User connectedUser = userRepositoy.findUserByUsername(username);
Set<GrantedAuthority> authorities = new HashSet<GrantedAuthority>();
for (Role r :connectedUser.getRoles()) {
authorities.add(new SimpleGrantedAuthority(r.getRoleAWB().name()));
}
BELUserDetails belUserDetails = new BELUserDetails(connectedUser.getIdUser(), authorities);
.....
....
}
}
我的角色是:
管理员 普通用户 交易用户
我的权限是: VALIDATE_TRANSATION INIT_TRANSACTION
功能用例是,如果您想要验证交易,您必须拥有 ROLE TRANSACTION USER 和权限 VALIDATE_TRANSACTION。
hasRole("ROLE_TRANSACTION_USER") and hasPermission("VALIDATE_TRANSACTION")
另一个重要的情况是,如果用户具有角色“ROLE_TRANSACTION_USER”和权限 VALIDATE_TRANSACTION ,我希望将来在尝试验证交易时使用 PermissionEvaluator 设置一些限制,他还必须具有大于金额的 Amountlimit PermissionEvaluator 的交易和这个功能非常酷
这就是为什么我需要同时实现角色和权限概念
我将如何将我的权限添加到 spring-security 的标准流程中。
提前致谢。
【问题讨论】:
-
你能举一些权限的例子吗?
-
我用我的角色和权限的一些示例更新了帖子
-
另一种情况是,如果用户具有角色 "ROLE_TRANSACTION_USER" 和权限 VALIDATE_TRANSACTION ,我希望将来在尝试验证交易时使用 PermissionEvaluator 设置一些限制,他还必须具有更大的 Amountlimit比交易的金额和 PermissionEvaluator 的这个功能非常酷。