我正在尝试开发一个应用程序,在这个应用程序中,用户可以被分配一个特定的角色,并且基于这个角色,他们可以访问特定的功能。这就是我目前的情况:
用户类:
@Entity
@Table(name = "users",
uniqueConstraints = {
@UniqueConstraint(columnNames = "username"),
@UniqueConstraint(columnNames = "email")
})
public class User {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "usid_generator")
@SequenceGenerator(name = "usid_generator", initialValue = 1000, allocationSize = 1, sequenceName = "usid_seq")
private Long id;
@NotBlank
@Size(max = 20)
private String username;
@NotBlank
@Size(max = 50)
@Email
private String email;
@NotBlank
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@Size(max = 120)
private String password;
@OneToMany(cascade = CascadeType.ALL,
fetch = FetchType.LAZY)
@JoinTable(name = "user_roles",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles = new HashSet<>();
private Integer notifications;
角色类别:
@Entity
@Table(name = "roles")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "roleid_generator")
@SequenceGenerator(name = "roleid_generator", initialValue = 100, allocationSize = 1, sequenceName = "roleid_seq")
private Integer id;
@Enumerated(EnumType.STRING)
@Column(length = 20)
private ERole name;
然而,我遇到了一些问题。我的应用程序前端有一些按钮,允许我更改用户角色,下面是一个示例:
@PutMapping("/users/setadmin/{id}")
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<User> setAdmin(@PathVariable("id") Long id, @RequestBody User user) {
Optional<User> userData = userRepository.findById(id);
Optional<Role> adminRole = roleRepository.findByName(ERole.ROLE_ADMIN);
Set<Role> roles = new HashSet<>();
roles.add(adminRole.get());
if (userData.isPresent()) {
User _user = userData.get();
_user.setRoles(roles);
return new ResponseEntity<>(userRepository.save(_user), HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}
ERoles存储在一个单独的类中:
public enum ERole {
ROLE_USER,
ROLE_MODERATOR,
ROLE_ADMIN
}
然而,通过使用这种方法,我得到了两个错误:
USER
分配给一个新帐户时,我得到了什么:java。sql。SQLIntegrityConstraintViolationException:关键“用户”角色的重复条目“1”。UK_5Q4RC4FH1ON 6567QK69UESVYF'
我猜这是级联类型的问题。用户类上的所有属性。我读了一些关于级联类型的文档,但我不知道应该使用哪一种,或者这是否是问题所在。非常感谢您的帮助
@OneTo众多注释表示一个用户可以有多个角色,但一个角色不能与多个用户相关。
试试这个:
User:
@ManyToMany(cascade = CascadeType.ALL)
private Set<Role> roles = new HashSet<>();
Role:
@ManyToMany(mappedBy = "roles")
private Set<User> users;
我不是Spring4的新手,但我是SpringSecurity4ACL的新手。我刚刚在我的MVC Web应用程序上实现了Spring Security4,这些应用程序都是后端Web服务。这里贴出了我所做的事情的链接: 这为我的URL增加了安全性,只有具有特定角色的用户才能请求URL。这太棒了!我们以SiteMinder为例,不是传回一个用户名,而是在请求头中传回一个令牌。我们调用OpenAM,传入
我知道还有其他类似的线程,但我不确定它们是否与Postgres相关。 我正在阅读PostgreSQL文档,内容如下: 注意:如第20章所述,PostgreSQL实际上在“角色”方面进行了权限管理。在本章中,我们始终使用数据库用户来表示“具有 LOGIN 特权的角色”。 这是否意味着角色是数据库用户?或者角色和用户之间有区别吗?用户是否有可能不具有完全权限,而角色是始终具有完全权限的用户?
角色决定了员工的管理范围、功能权限,一个员工可以有多个角色。当员工拥有多个角色时,其管理范围、功能权限为多个角色相加。 管理范围 您可设置角色的管理范围,若设置该角色管理范围为部门,则可管理员工与单据;和设置该员工管理范围为项目,则可管理单据。部门支持选择所有部门、所在的部门及所有子部门、指定部门 项目支持选择所有项目、所在的项目及所有子项目、指定项目 功能权限 您可设置角色的功能权限,其中单据、
我正在创建一个约会网站来学习网络开发,我不知道如何制作背景色,它只是在特定的div上不起作用。我应该改变什么?我尝试了很多东西,但什么都没有发生。 添加lorem ipsum所以我可以问这个问题...跳过这个 Lorem ipsum dolor sit amet,concetetur adipiscing elit。Morbi ut felis magna。聪明的人,聪明的人,聪明的人,聪明的人。
您可在添加员工是分配角色,具体请详见【如何导入员工】 除此之外,您可在【角色】页面通过“管理成员”进行角色分配。(主管,初始管理员除外) 分配角色 点击角色右侧“管理成员”按钮(主管、初始超管除外) 您可在此添加或移除角色成员。 设置主管 您可在部门或项目模块进行主管设置,具体请详见【通过部门、项目管理员工】 设置初始管理员 初始管理员为默认角色,为企业唯一,若需修改,请详见【如何移交初始管理员】
问题内容: 名称(和javadocs)暗示这是一个适配器(设计模式)。但我不这么认为-至少一见钟情,它无法使任何事物适应任何事物 发生的唯一变化是,您可以将的实例传递给需要任何一个接口的任何方法。因此,您可以使用仅预期的实例。但是没有“翻译”发生。而且它不符合GoF的UML-在“类适配器”版本中,期望对一个方法的调用会从适配器中调用一个方法。 那么,这是一个适配器(设计模式),还是仅仅是一个引起混