Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring MVC、Spring数据JPA、Spring安全集成_Java_Spring Mvc_Jpa_Spring Security - Fatal编程技术网

Java Spring MVC、Spring数据JPA、Spring安全集成

Java Spring MVC、Spring数据JPA、Spring安全集成,java,spring-mvc,jpa,spring-security,Java,Spring Mvc,Jpa,Spring Security,我有一个SpringMVCWeb应用程序,它使用JPA和Hibernate将对象映射到MySQL数据库。我已经添加了Spring安全性,并使用内存中的模型使其工作。我想添加用户和角色实体以与Spring Security集成 我想知道是否有人能为我指明如何做这件事的方向,或者指导我如何完成这件事?实现一个加载用户和角色模型的工具。它只是loadUserByUsername,它将返回一个对象。UserDetails本身将有一个所有角色的列表。一个角色在这里被称为被授予的权威。有一个SimpleGr

我有一个SpringMVCWeb应用程序,它使用JPA和Hibernate将对象映射到MySQL数据库。我已经添加了Spring安全性,并使用内存中的模型使其工作。我想添加用户和角色实体以与Spring Security集成

我想知道是否有人能为我指明如何做这件事的方向,或者指导我如何完成这件事?

实现一个加载用户和角色模型的工具。它只是loadUserByUsername,它将返回一个对象。UserDetails本身将有一个所有角色的列表。一个角色在这里被称为被授予的权威。有一个SimpleGrantedAuthority可以从一个简单的角色名(字符串)创建它

但也许足够满足你的需要了

更新评论中的适当问题:

只需像平常一样设计您的用户角色关系。在UserDetails实现中,您需要将GetAuthories中的角色作为GrantedAuthority返回

例如: 降到最低限度

角色

使用者

@Entity(name=“auth\u user”)
公共类用户实现UserDetails{
@身份证
@纵队
私有字符串id;
@列(nullable=false,unique=true)
私有字符串名称;
@ManyToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
/** 
*与我们角色的关系
**/
私有集角色=新HashSet();
/**
*实现GetAuthority并使用唯一名称将角色转换为
*单纯形权限
**/

公共收集谢谢,我会尝试一下。我想将其他实体映射到我的用户实体,因此我可能需要使用第一种方法。如果它解决了您的问题,您可以接受我的答案。或者帮助我改进它。谢谢。嗨,您能不能向我提供一个代码示例,或者为我指出一个方向。我已经实现了我们erDetailsService并创建了一个扩展UserDetails的用户实体。我如何向我的用户实体添加角色?感谢您的帮助,我实际上已经完成了这项工作,我将接受您的回答。
@Entity(name = "auth_role")
public class Role {

  @Id
  @Column
  private String id;

  @Column(nullable = false, unique = true)
  /**
   *unique and transformed to GrantedAuthority,can be used in Spring expression hasRole, etc
  **/
  private String name;


  @Column(nullable = true)
  private String description;
}
@Entity(name = "auth_user")
public class User implements UserDetails {

   @Id
   @Column
   private String id;

   @Column(nullable = false, unique = true)
   private String name;


   @ManyToMany(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
   /** 
    * relation to our roles
   **/
   private Set<Role> roles = new HashSet<Role>();

   /**
   * implements getAuthorities and transformes our Roles using the unique names to 
   * SimpleGrantedAuthority
   **/
   public Collection<? extends GrantedAuthority> getAuthorities() {
     Set<GrantedAuthority> authList = new HashSet<GrantedAuthority>();

     for (Role role : user.getRoles()) {
       authList.add(new SimpleGrantedAuthority(role.getName()));
     }        

     // Return list of granted authorities
     return authList;
   }
}