SpringSecurity
安全 一直以来都是我们项目考虑的重点之一 并不是做完项目才开始了解项目的安全而是从一开始环境搭建的时候就要考虑项目的安全。 Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。 这就是我们对于安全的解决方案 他就是一个能保护springboot项目的框架。而且这个框架还是一个权限管理的框架能提供身份的验证和授权 实际上就是通过你的身份来给你进入相应的页面的权利 话不多说 赶紧开始上手使用
导包
首先还是要导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
其实直接把web那个启动器的后面改一下就好了
写一个配置类
新建一个配置类 然后继承这个security的父类 再重写里面的方法 最后就是给上注解宣布这是一个配置让spring来接收这个配置 大概的思路就是这样的。 新建一个配置类
package com.kuang.config;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@EnableMethodSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/**").hasRole("vip1")
.antMatchers("/vip2").hasRole("vip2");
http.formLogin();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.passwordEncoder(new BCryptPasswordEncoder()).withUser("liu").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1","vip2")
.and().withUser("x").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1");
}
}
可以看到里面重写了两个方法 对于第一个config 第一个是用来授权的 你想要给什么用户什么样的访问权限都是通过重写这个config来实现的 第一个授权的含义是 如果访问所有位于/**下的请求都至少需要得到vip1的授权第二个的含义也一样
对于第二个config 这里实现的是认证 简单来说就是你通过了账号密码的验证就能得到相对应的授权。但是要注意的是里面有一个密码的加密 我的理解是为了安全security强迫必须要对密码进行加密 因此就出现了设置密码的加密格式
到这里基本上拦截器的功能差不多就能实现了 睡觉去了 明天接着看
|