我有三个实体用户,机构和角色。1)用户和机构之间的一对多2)用户和角色之间的多对多
-------用户--------
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="user_Id")
private int userId;
@Column(name="name")
private String name;
@Column(name="lastname")
private String lastname;
@Column(name="email")
private String email;
@Column(name="password")
private String password;
@Column(name="isActive")
private boolean isActive;
@Column(name="lastActive")
private String lastActive;
@Column(name="createdDate")
private String createdDate;
@Column(name="isBlocked")
private boolean isBlocked;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "institution_id", nullable = false)
@JsonIgnoreProperties(value = {"user"})
private Institution institution;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "user_has_role",
joinColumns = {
@JoinColumn(name = "user_id", referencedColumnName = "user_id",
nullable = false, updatable = true)},
inverseJoinColumns = {
@JoinColumn(name = "role_id", referencedColumnName = "role_id",
nullable = false, updatable = true)})
@JsonIgnoreProperties(value = {"users"})
private Set<Role> roles = new HashSet<>();
}
-------机构-------
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Entity
@Table(name = "institution")
public class Institution {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="institution_Id")
private int institutionId;
@Column(name="name")
private String name;
@Column(name="type")
private String type;
@Column(name="location")
private String location;
@OneToMany(mappedBy = "institution", fetch = FetchType.LAZY)
@JsonIgnoreProperties(value = {"institution" , "user"})
private Set<User> user;
}
-------角色-------
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Entity
@Table(name = "role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="role_Id")
private int roleId;
@Column(name="name")
private String name;
@Column(name="description")
private String description;
@ManyToMany(mappedBy = "roles", fetch = FetchType.LAZY)
@JsonIgnoreProperties(value = {"roles"})
private Set<User> users = new HashSet<>();
}
这是我在MySql中的3个实体和表我有7个角色•超级用户•银行管理•银行支持•银行服务•商户管理•商户支持•商户服务
超级用户可以创建任意角色的用户
@PostMapping("/addUser")
public String addUser(@RequestBody User user) {
String rawpassword = user.getPassword();
String encodedpasswrod = passwordencoder.encode(rawpassword);
user.setPassword(encodedpasswrod);
userrepository.save(user);
return "user saved with name: " + user.getName();
}
这个api可以工作,我可以将角色设置为api json主体中的任何内容
但是希望如果用户是Bank-Admin,他只能创建Bank-Support和Bank-Service,我试图创建一个新的API,它只能创建一个具有这两个特定角色的用户。然后限制bank admin访问其他可以创建任何类型用户的API。
有没有其他的方法,如果没有,我该怎么做。。。
您必须实现用户权限的自定义实现。
就像根据login person一样,您将获得那个login person角色,并且根据您的标准,只需进行验证,比如检查他试图添加的实体是否有资格创建它。
Map<String, List<String>> roleUserAccessMap = new HashMap<>();
roleUserAccessMap.put("Bank-Admin", Arrays.asList("Bank-Support", "Bank-Service"));
就像下面那样检查一下
String loginPersonRole="Bank-Admin"; //This value should get from logged-in person context
if(roleUserAccessMap.containsKey(loginPersonRole)){
//proceed ahead with Add api
}else{
System.out.println("You do not have enough privileage to create Use");
}
这会帮到你的。
我是oAuth2安全系统的新手。关于访问REST资源的基于用户角色的授权,我有一个问题。我的互联网冲浪提供了关于oauth2的身份验证部分的输入。 让我提供给你困扰我的情况。
我有一个具有多个角色(ROLE1、ROLE2)的安全springboot应用程序。一个用户同时具有两个角色,而另一个用户只有一个角色。在成功登录用户被发送到登陆页面,在那里我想禁用元素,如果用户只有一个角色。 我试过用thymeleaf-extras-springsecurity3,但没有成功。这是我的代码: pom.xml 任何帮助都将不胜感激!谢谢!
我用各种各样的产品建立了Woocommerce。 这些产品在一个属性上都有可能值为1kg、2kg和5kg的变化。 我还创建了一个“Aziende”用户组。我想一些产品的变化,只显示“阿齐恩德”的客户。我不想让其他客户看到这些变化。 例如:Aziende客户可以看到选项“1kg、2kg、5kg”,而其他客户角色只能看到1kg选项。 这在WooCommerce中可能吗?
因此,在我们的Laravel应用程序中有两个角色(internet客户端和管理员)。下面是DB模式 我们想允许www.site。com/登录路径,仅记录具有“客户端”角色的用户。 请注意,一旦用户登录并强制注销,我们不想检查角色。 谢谢
有没有更好的方法来实现这种设置(类似于组织设置,一个人可以属于几个组织并管理其中的一些/所有组织,而不必有几个帐户)? 我用的是Keycloak 4.6
我有多个角色用于用户登录,如果一个用户只有一个角色,我已经成功实现了,但问题是如果一个用户有多个角色,那么我如何实现这一点。 感谢并问候普拉巴特·潘伟迪。
情景: 我们有一个多租户应用程序,其中每个租户都有自己的模式。有一个公共模式,其中存在一个包含每个租户记录的表。因此,有一个超级管理员可以创建租户,并将管理员分配给新创建的租户。 为了实现RBAC(基于角色的访问控制),我计划将每个角色表放入租户模式,并实现一些中间件来检查授权。在孤立的模式环境中,这是一个好的体系结构吗?
本文展示了如何根据不同的用户角色,在登录之后来重定向到不同的页面。 在 method-security项目的基础上,我们构建了一个role-base-login项目。 build.gradle 修改 build.gradle 文件,让我们的role-base-login项目成为一个新的项目。 修改内容也比较简单,修改项目名称及版本即可。 jar { baseName = 'role-bas