Spring Security测试代码
⒈实体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测试代码的更多相关文章
- Spring Security 5.0.x 参考手册 【翻译自官方GIT-2018.06.12】
源码请移步至:https://github.com/aquariuspj/spring-security/tree/translator/docs/manual/src/docs/asciidoc 版 ...
- Spring Security极简入门三部曲(上篇)
目录 Spring Security极简入门三部曲(上篇) 写在前面 为什么要用Spring Security 数据库设计 demo时刻 核心代码讲解 小结 Spring Security极简入门三部 ...
- Spring Security(05)——异常信息本地化
Spring Security支持将展现给终端用户看的异常信息本地化,这些信息包括认证失败.访问被拒绝等.而对于展现给开发者看的异常信息和日志信息(如配置错误)则是不能够进行本地化的,它们是以英文硬编 ...
- Spring Security(三十五):Part III. Testing
This section describes the testing support provided by Spring Security. 本节介绍Spring Security提供的测试支持. ...
- Spring Security(三十一):9.6 Localization(本地化)
Spring Security supports localization of exception messages that end users are likely to see. If you ...
- Spring Security 官网文档学习
文章目录 通过`maven`向普通的`WEB`项目中引入`spring security` 配置 `spring security` `configure(HttpSecurity)` 方法 自定义U ...
- Spring Security整合企业微信的扫码登录,企微的API震惊到我了
本文代码: https://gitee.com/felord/spring-security-oauth2-tutorial/tree/wwopen/ 现在很多企业都接入了企业微信,作为私域社群工具, ...
- 使用Spring MVC测试Spring Security Oauth2 API
不是因为看到希望了才去坚持,而坚持了才知道没有希望. 前言 在Spring Security源码分析十一:Spring Security OAuth2整合JWT和Spring Boot 2.0 整合 ...
- 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_17-认证接口开发-申请令牌测试
远程 调用Spring Security来申请令牌,然后把申请到令牌存储到redis里面 cookieMaxAge: ‐1 -1表示浏览器一关闭cookie就失效. 测试远程申请令牌 TestCl ...
随机推荐
- hadoop 伪分布式搭建
下载hadoop1.0.4版本,和jdk1.6版本或更高版本:1. 安装JDK,安装目录大家可以自定义,下面是我的安装目录: /usr/jdk1.6.0_22 配置环境变量: [root@hadoop ...
- varStatus="vs"
通过在百度上查看,发现是属于JSTL 标签.我具体说一下用途吧 就是删除/新增的时候,序号总是连续的从1开始排列,序号的数据与数据库没有关系,序号并不等于id,在数据库中的id仍然是原来的那样,不连续 ...
- 2017-12-15python全栈9期第二天第七节之整除
#!/user/bin/python# -*- coding:utf-8 -*-a = 10b = 20print(a // b)print(b // a)
- SPI设计
目录 SPI设计 概述 寄存器配置 title: SPI设计 tags: ARM date: 2018-11-05 15:22:59 --- SPI设计 概述 在SPI协议中,有两个值来确定SPI的模 ...
- nginx跨域的简单应用
nginx跨域的简单应用 要求:1.浏览器访问print.qianbaihe.wang/zt 直接调转至 www.flybirdprint.com/zt,浏览器显示域名不变. server { lis ...
- 今天我们来聊聊svn的使用
前言:作为一名码农,如果你告诉你的小伙伴你不会使用版本控制,那么你将会被小伙伴所鄙视,这个文章从区别带你领略他们的优缺点. (一)git和svn之间的区别 svn相当于是一个云存储,必须要借助网络,才 ...
- Contrast Ratio(Enhanced) (Level AAA)
Contrast ratio between your text and background is at least 7:1 All of your users will benefit from ...
- golang channle close() x,ok := <- c
close为内置函数 close内置函数关闭一个通道channle,其效果为:在最后的值从已关闭的信道中被接收后,任何对其的接收操作都会无阻塞的成功.对于已关闭的信道使用v,ok := <- ...
- std::rotate使用
1. 进行元素范围上的左旋转 first - 原范围的起始 n_first - 应出现在旋转后范围起始的元素 last - 原范围的结尾 原来:1 2 3 左旋转后(起始元素是2) : 2 3 1
- SpringBoot系列: Eclipse+Maven环境准备
这个链接比我写得更全面, http://tengj.top/2018/01/01/maven/ =============================20190115补充: maven 的一些插件 ...