我想知道如何根据特定用户过滤对象,以及如何给某些用户授权使用Spring Security查看一些对象。 我的意思是,我有一个Park.java对象,通过Hibernate链接到park table。 然后我有User.java,它是Spring Security的经典用户。我想只为每个用户分配一些公园,这样每个用户都可以访问并只查看他拥有身份验证的公园。
我正在考虑在Park.java和User.java之间创建一个ManyToMany关系,以便有可能将公园分配给用户。
所以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;
}
一旦创建了用户和公园之间的关系,我怎样才能确定每个登录的用户只能看到他拥有auth的公园?
答案 0 :(得分:1)
您必须验证所请求的Park
是否属于该用户。您可以通过控制器检查用户:
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String name = auth.getName(); //get logged in username
从Park
,您可以验证User
是否有效并对此采取措施。