私は春のセキュリティで表現したいAutorizationのカスタムモデルを持っています:
私は役割と権限の概念を持っています:
@Entity
public class User
...............
@ManyToMany
@Column
private Set<Role> roles;
@ManyToMany
@Column
private Set<Permission> permissions;
}
私のカスタム UserdetailsService では、ロールをロードするためのクリーンな方法がありますが、アクセス許可に関連するスプリングセキュリティの方法とコンポーネントが見つかりません:
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")
もう1つの重要なケースは、将来、ユーザーがロール「ROLE_TRANSACTION_USER」と権限VALIDATE_TRANSACTIONを持っている場合、トランザクションを検証しようとするときにPermissionEvaluatorを使用していくつかの制限を設けたいということです。この機能は PermissionEvaluator で非常にクールです
そのため、役割と権限の両方の概念を実装する必要があります
spring-security の標準フローに許可を追加する方法。
前もって感謝します 。