gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 10:39:31 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com