Spring security 在项目中的使用第一篇之准备阶段
首先下载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的使用就不再说明。