Spring security 在项目中的使用第一篇之准备阶段

本文介绍如何在项目中配置 Spring Security 并实现基于角色的权限管理。通过定义 User、Role 和 Permissions 三个实体类之间的关系,实现了多对多的用户-角色-权限分配方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先下载Spring security 所需要的jar 包,减压后 如图所示:

 

我们在项目中只需要他两个jar包:

 

以上是在项目中使用Spring security 的准备。

分析权限所需要的类

   需要以下三个实体

   User(用户)  Role(角色)  Permissions(权限)

 

   三个实体类有以下的关系:

 

   User -------User_role-------------Role                 用户与角色  多对多

   Role---------Role_per-------------Permissions     角色与权限  多对多

 

   /**

 * 用户实体类

 */

@Entity

@Table(name = "user")

public class User implements Serializable {

private static final long serialVersionUID = -413157271031924368L;

@Id

@GeneratedValue

private int id;

@Basic

private String userName;; // 登录名

private Date createTime;; // 创建时间

private int disabled;     // 状态(0可以,1不可以)

 

private String password;

 

// 用户和 用户角色 中间表的双向一对多

@ManyToMany(targetEntity = Role.class)

@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))

// @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)

private List<Role> roles;

 

        setters();

        setters();

}

 

 

/**

 * 角色实体类

 * @author Administrator

 */

@Entity

@Table(name = "role")

public class Role  implements Serializable{

private static final long serialVersionUID = -5593767895288895887L;

@Id

@GeneratedValue

private int ro_id;

private String ro_name;

private  int ro_ismanager; //是否为平台角色(0.workshop角色;1.平台角色)

private String ro_description;  //角色描述

 

//角色和中间表的双向一对多

@ManyToMany

@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "role_id"), inverseJoinColumns = @JoinColumn(name = "user_id"))

private List<User> users;

 

//角色 和 权限 关联表的双向多对多

@ManyToMany(targetEntity = Permissions.class)

@JoinTable(name = "role_per", joinColumns = @JoinColumn(name = "role_id"), inverseJoinColumns = @JoinColumn(name = "per_id"))

private List<Permissions> Permissionss;

 

        getters();

        setters();

}

 

 

/**

 * 权限实体类

 * @author Administrator

 */

@Entity

@Table(name = "permissions")

public class Permissions implements Serializable{

 

private static final long serialVersionUID = -4232835891580210842L;

@Id

@GeneratedValue

private int per_id;

private String per_name;             //权限名

private String per_description; //描述

//权限 和 角色权限 关联表的双向多对多

@ManyToMany

@JoinTable(name = "role_per", joinColumns = @JoinColumn(name = "per_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))

private List<Role> roles;

 

         getters();

         setters();

}

 

以下是实体间的映射会生成五张表。

 

 

 

 

JPA的使用就不再说明。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值