⒈实体Bean

 package cn.coreqi.blog.entities;

 import org.springframework.security.core.GrantedAuthority;
import javax.persistence.*; /**
* 表示权限的实体类
* @author fanqi
*/
@Entity
public class Authority implements GrantedAuthority {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) //自增长
private Long id; @Column(nullable = false) //值不能为空
private String name; public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public String getAuthority() {
return this.name;
}
}
 package cn.coreqi.blog.entities;

 import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import javax.persistence.*;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List; /**
* 用户实体类
* @author fanqi
*/
@Entity
public class User implements Serializable,UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) //自增主键
private Long id; //主键ID @NotEmpty(message = "姓名不能为空!")
@Size(min = 2,max = 20)
@Column(nullable = false,length = 20)
private String name; @NotEmpty(message = "邮箱不能为空!")
@Size(max = 50)
@Email(message = "邮箱格式不正确!")
@Column(nullable = false,length = 50,unique = true)
private String email; @NotEmpty(message = "用户账号不能为空!")
@Size(min = 6,max = 18)
@Column(nullable = false,length = 18,unique = true)
private String username; //用户账号 @NotEmpty(message = "用户密码不能为空!")
@Size(max = 20)
@Column(length = 20)
private String password; //用户密码 @Column(length = 200)
private String avatar; //头像图片地址 @ManyToMany(cascade = CascadeType.DETACH,fetch = FetchType.EAGER)
@JoinTable(name = "user_authority", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "authority_id", referencedColumnName = "id"))
private List<Authority> authorities; public User() {
} public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
} public void setUsername(String username) {
this.username = username;
} public void setPassword(String password) {
this.password = password;
} public String getAvatar() {
return avatar;
} public void setAvatar(String avatar) {
this.avatar = avatar;
} public void setAuthorities(List<Authority> authorities) {
this.authorities = authorities;
} @Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
", avatar='" + avatar + '\'' +
", authorities=" + authorities +
'}';
} @Override
public Collection<? extends GrantedAuthority> getAuthorities() {
// return authorities;
// 需将 List<Authority> 转成 List<SimpleGrantedAuthority>,否则前端拿不到角色列表名称
List<SimpleGrantedAuthority> simpleAuthorities = new ArrayList<>();
for(GrantedAuthority authority : authorities){
simpleAuthorities.add(new SimpleGrantedAuthority(authority.getAuthority()));
}
return simpleAuthorities;
} @Override
public String getPassword() {
return password;
} @Override
public String getUsername() {
return username;
} @Override
public boolean isAccountNonExpired() { //账号是否未过期
return true;
} @Override
public boolean isAccountNonLocked() { //账号是否未锁
return true;
} @Override
public boolean isCredentialsNonExpired() { //验证信息是否未过期
return true;
} @Override
public boolean isEnabled() { //账号是否启动
return true;
}
}

⒉仓库

 package cn.coreqi.blog.repository;

 import cn.coreqi.blog.entities.Authority;
import org.springframework.data.jpa.repository.JpaRepository; public interface AuthorityRepository extends JpaRepository<Authority,Long> {
}

⒊服务层

 package cn.coreqi.service;

 import cn.coreqi.blog.entities.Authority;
import org.springframework.stereotype.Service; public interface AuthorityService {
/**
* 根据ID查询权限
* @param id
* @return
*/
Authority getAuthorityById(Long id);
}
 package cn.coreqi.service.impl;

 import cn.coreqi.blog.entities.Authority;
import cn.coreqi.blog.repository.AuthorityRepository;
import cn.coreqi.service.AuthorityService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; @Service
public class AuthorityServiceImpl implements AuthorityService { @Autowired
private AuthorityRepository repository; @Override
public Authority getAuthorityById(Long id) {
return repository.findById(id).get();
}
}

⒋控制层(待补充

Spring Security测试代码的更多相关文章

  1. Spring Security 5.0.x 参考手册 【翻译自官方GIT-2018.06.12】

    源码请移步至:https://github.com/aquariuspj/spring-security/tree/translator/docs/manual/src/docs/asciidoc 版 ...

  2. Spring Security极简入门三部曲(上篇)

    目录 Spring Security极简入门三部曲(上篇) 写在前面 为什么要用Spring Security 数据库设计 demo时刻 核心代码讲解 小结 Spring Security极简入门三部 ...

  3. Spring Security(05)——异常信息本地化

    Spring Security支持将展现给终端用户看的异常信息本地化,这些信息包括认证失败.访问被拒绝等.而对于展现给开发者看的异常信息和日志信息(如配置错误)则是不能够进行本地化的,它们是以英文硬编 ...

  4. Spring Security(三十五):Part III. Testing

    This section describes the testing support provided by Spring Security. 本节介绍Spring Security提供的测试支持. ...

  5. Spring Security(三十一):9.6 Localization(本地化)

    Spring Security supports localization of exception messages that end users are likely to see. If you ...

  6. Spring Security 官网文档学习

    文章目录 通过`maven`向普通的`WEB`项目中引入`spring security` 配置 `spring security` `configure(HttpSecurity)` 方法 自定义U ...

  7. Spring Security整合企业微信的扫码登录,企微的API震惊到我了

    本文代码: https://gitee.com/felord/spring-security-oauth2-tutorial/tree/wwopen/ 现在很多企业都接入了企业微信,作为私域社群工具, ...

  8. 使用Spring MVC测试Spring Security Oauth2 API

    不是因为看到希望了才去坚持,而坚持了才知道没有希望. 前言 在Spring Security源码分析十一:Spring Security OAuth2整合JWT和Spring Boot 2.0 整合 ...

  9. 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_17-认证接口开发-申请令牌测试

    远程 调用Spring Security来申请令牌,然后把申请到令牌存储到redis里面 cookieMaxAge: ‐1   -1表示浏览器一关闭cookie就失效. 测试远程申请令牌 TestCl ...

随机推荐

  1. 关于java文件下载文件名乱码问题解决方案

    JAVA文件下载时乱码有两种情况: 1,下载时中文文件名乱码 2,下载时因为路径中包含中文文件名乱码,提示找不到文件 解决方法见下面部分代码 response.setContentType(" ...

  2. OpenStack的基础原理

    OpenStack的基础原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集.其 ...

  3. Centos7下安装OpenLDAP+Phpldapadmin及主主同步

    1.环境介绍及初始化准备 server1:172.16.138.87 openldap01 server2:172.16.138.88 openldap02 配置yum源 wget -O /etc/y ...

  4. Java测试Junit

    Junit就是做测试用的,想想平常我们是怎么测试我们的方法或者类的,是不是在main方法里面去调用?这样有缺点: 1.每次都要在main方法里面写测试,假如我要上线新系统,里面有1000个方法需要测试 ...

  5. C++回顾day01---<C++对C的增强>

    一:命名空间 二:三目运算符 (一)C语言三目运算符返回值(不可修改) (二)C++中三目运算符直接返回变量本身(可以直接进行修改) 三:C++要求所有函数必须有类型(不重要) (一)C语言允许函数无 ...

  6. springmvc上传图片《2》

    创建springboot项目 编写配置 server: port: 8082 spring: application: name: upload-service servlet: multipart: ...

  7. UDP协议

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明出处http://blog.csdn.net/yming0221/article/details/7532512 更多请看专栏, ...

  8. Bootstrap模态框修改出现的位置和大小

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. 【leetcode-69】 x 的平方根

    (主要是越界问题) 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 ...

  10. ASP.NET MVC+EF框架+EasyUI实现权限管理(附源码)

    前言:时间很快,已经快到春节的时间了,这段时间由于生病,博客基本没更新,所以今天写一下我们做的一个项目吧,是对权限的基本操作的操作,代码也就不怎么说了,直接上传源码和图片展示,下面我们直接进入主题介绍 ...