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 ...
随机推荐
- java将long数据转为int类型的方法
二.调用intValue()方法 [java] long ll = 300000; int ii= new Long(ll).intValue(); 三.先把long转换成字符串String,然后在转 ...
- 关于mac 系统如何通过终端 连接linux服务器 并传文件!
首先要打开终端 mac远程链接服务器 输入 : ssh root@xxx.xx.xxx.xx xxx.xx.xxx.xx是端口号 后面会要求你输入password 即可远程连接 mac通过终端给 ...
- collections 模块之Counter
Counter字典的子类,用于统计哈希对象 from collections import Counter users = ["body1","body11", ...
- Hadoop记录-Yarn命令
概述 YARN命令是调用bin/yarn脚本文件,如果运行yarn脚本没有带任何参数,则会打印yarn所有命令的描述. 使用: yarn [--config confdir] COMMAND [--l ...
- Web API中的模型验证
一.模型验证的作用 在ASP.NET Web API中,我们可以使用 System.ComponentModel.DataAnnotations 命名空间中的属性为模型上的属性设置验证规则. 一个模型 ...
- Eclipse 常用技巧及常见问题解决
文章目录 Eclipse默许函数折叠打开 Eclipse插件: win7屏蔽ctrl+alt+up/down快捷键/ (eclipse冲突) 去掉 eclipse 中自动生成的注释 //TODO 常见 ...
- git的那些事
前言:记得在想学习git的时候,一直停留在思想的层面,总没有弄清楚它的运行机制,经常与github混淆,还好找到了一个好的教程,带我领略了git的风采 (一)git的优点 git的优点:版本控制在本地 ...
- PHP7 学习笔记(十四)Reids 键空间通知配合TP5 实现分布式延时任务
测试环境:windows 10 + phpStudy 配置redis配置文件 redis.windows.conf notify-keyspace-events "Ex" 重启re ...
- SpringBoot系列: 集成MyBatis
本文主要修改自下面博客:http://www.ityouknow.com/springboot/2016/11/06/spring-boo-mybatis.htmlhttp://tengj.top/2 ...
- VS Resharper正常代码显示红色处理
点击重启VS即可.