我有Autorization的自定义模型,我想带弹簧的安全表示:角色和权限自定义模型
我有角色和权限的concpt:
@Entity
public class User
...............
@ManyToMany
@Column
private Set<Role> roles;
@ManyToMany
@Column
private Set<Permission> permissions;
}
在我自己的UserDetailsService我有一个干净的方式来加载的角色,但我on't找到任何方式和与之相关的权限,弹簧安全的任何componenent:
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);
.....
....
}
}
我的角色是:
ADMIN 普通用户 交易USER
我的权限是: VALIDATE_TRANSATION INIT_TRANSACTION
和功能的使用情况是,如果你想验证你的交易拥有ROLE TRANSACTION USER和权限VALIDATE_TRANSACTION。
hasRole("ROLE_TRANSACTION_USER") and hasPermission("VALIDATE_TRANSACTION")
另一个重要的情况是,我希望在以后的使用PermissionEvaluator尝试,如果用户有角色“ROLE_TRANSACTION_USER”和许可VALIDATE_TRANSACTION验证交易时放一些限制,他还必须有Amountlimit更大比交易量和这个功能是非常酷与PermissionEvaluator
这就是为什么我需要同时实现了角色和权限概念
如何,我将我的许可添加到弹簧安全的标准流程。
在此先感谢。
您能否显示一些权限示例? –
我使用角色和权限的一些示例更新了帖子 – Nabil
另一种情况是,如果用户具有角色“ROLE_TRANSACTION_USER”和权限VALIDATE_TRANSACTION,我希望将来使用PermissionEvaluator在尝试验证事务时放置一些限制,他还必须具有大于交易金额的Amountlimit,并且该功能对于PermissionEvaluator非常酷。 – Nabil