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

标签 java spring hibernate

我想知道如何根据特定用户过滤对象,以及如何授予某些用户使用 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/

相关文章:

java - Spring消息源,bean XML中的getMessage?

java - 如何减少 Hibernate 类中的重复代码?

java - 在数据库中使用 Hibernate 和 H2 时出错

Java GMT 显示

java - 从线程返回数据类型

java - java处理大数据的方法

java - 我可以覆盖 jsr-303 验证注释吗

java - 如何从另一个 Web 服务调用一个 Web 服务并返回结果

java - Spring 4 异常处理 : No suitable resolver for argument

java - @Version 在 Spring mongo 中没有增加