我想知道如何根据特定用户过滤对象,以及如何授予某些用户使用 Spring Security 查看某些对象的权限。 我的意思是,我有一个 Park.java 对象,它通过 Hibernate 链接到公园表。 然后我有 User.java,它是 Spring Security 的经典用户。我只想为每个用户分配一些公园,以便每个用户只能访问和查看他有权访问的公园。
我正在考虑在 Park.java 和 User.java 之间创建多对多关系,以便能够将公园分配给用户。
所以User.java有
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name="user_parcheggio", joinColumns = {@JoinColumn(name="user_id") }, inverseJoinColumns = {
@JoinColumn(name="park_id") })
private Set<Park> parks = new HashSet<Park>();
public Set<Park> getParks() {
return parks;
}
public void setParks(Set<Park> parks){
this.parks = parks;
}
Park.java 有
@ManyToMany(cascade=CascadeType.ALL, mappedBy="park")
private Set<User> users = new HashSet<User>();
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
创建用户和公园之间的关系后,如何确保每个登录用户只能看到他有权访问的公园?
最佳答案
您必须验证请求的 parking
是否属于该用户。从您的 Controller 中,您可以通过以下方式检查用户:
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String name = auth.getName(); //get logged in username
从Park
,您可以验证User
是否有效并据此采取措施。
关于java - Spring Security - 如何列出不同用户的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34495366/