准备工作
1、新建一个springboot项目并导入下面依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.60</version>
</dependency>
2、建一个测试数据库并建立user表
CREATE TABLE`user`(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`user_name` VARCHAR(50),
`password` VARCHAR(200),
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、建实体类user,跟表对应。以及相关的dao、service
4、新建一个类实现UserDetails类,并重写所有的方法:
public class LoginUser implements UserDetails {
private User user; //我们自己的user实体类
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
//返回该账号下所有的权限信息
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
List<GrantedAuthority> authorities = new ArrayList<>();
//权限标识前面要有 ROLE_
for (Role role : user.getRoles()) {
authorities.add(new SimpleGrantedAuthority("ROLE_"+role.getName()));
}
return authorities;
}
//获取账号密码
@Override
public String getPassword() {
return user.getPassword();
}
//获取账号名(登录凭证)
@Override
public String getUsername() {
return user.getUserName();
}
//账户没有过期(视情况而定,默认返回true)
@Override
public boolean isAccountNonExpired() {
return true;
}
//账户没被锁定(视情况而定,默认返回true)
@Override
public boolean isAccountNonLocked() {
return true;
}
//密码没有过期(视情况而定,默认返回true)
@Override
public boolean isCredentialsNonExpired() {
return true;
}
//账号可用(视情况而定,默认返回true)
@Override
public boolean isEnabled() {
return true;
}
开始搭建
因为springsecurity默认开启的是httpBasic()的认证方式,在我们不做任何配置的情况下,启动带有springsecurity依赖的项目时候,会进入一个默认登录页面。

默认用户名是user,密码是一串随机码。会在启动项目的控制台中打印出来。

为了方便,我们可以在yml文件中自定义httpBasic()认证的用户名密码

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



