Spring Security - 如何按不同用户列出对象

时间:2015-12-28 14:27:25

标签: java spring hibernate

我想知道如何根据特定用户过滤对象,以及如何给某些用户授权使用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的公园?

1 个答案:

答案 0 :(得分:1)

您必须验证所请求的Park是否属于该用户。您可以通过控制器检查用户:

Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String name = auth.getName(); //get logged in username

Park,您可以验证User是否有效并对此采取措施。