简介
Spring Security是一个强大的和高度可定制的身份验证和访问控制框架
Spring Security着重于为Java应用程序提供身份验证和授权。身份验证是为用户建立一个他所声明的主体的过程(主体一般式指用户,设备或可以在你系统中执行动作的其他系统)。授权指的是一个用户能否在你的应用中执行某个操作,在到达授权判断之前,身份的主体已经由身份验证过程建立了。这些概念是通用的,并不是Spring Security特有的。
在一个web服务中.如果没有身份认证的话,那就是只要知道接口地址就可以调用,在实际的项目中肯定是不可能的,都需要做用户的认证,也就是登录的操作,登录完成之后,再调用接口的时候,还需要判断这个用户有没有权限,如果这个用户没有权限的话,那也是不能调,使用Spring Security就可以实现对接口的认证和权限的一个控制
Spring Security主要实现了以下三件事:
- 认证
- 授权
- 攻击防护,防止伪造身份
简单使用
首先,需要引入security的依赖,如下:1
2
3
4
5<!-- serurity -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
引入依赖之后,项目就会自动加入一个身份的验证,我们请求项目中的一个接口,效果如下:
这里会提示输入用户名和密码,这时候我们是只引入了一个依赖,还什么都没有配置,所以就是默认的用户名和密码, 默认的用户名是:user
, 然后默认的密码可以在我们项目的启动日志里面找到,如下:
这里登陆之后就可以访问接口了
那如果说我们引入security的依赖之后,并不想去让他做认证,可以在 application.yml
中关闭,代码如下:1
2
3security:
basic:
enabled: false
简单配置
在我们上面的例子中,请求如果没有登录的话,是在浏览器里面弹出个框,然后输入用户名和密码,实际的应用中,不可能用这种方式去登录的,一般是用一个登录的页面来进行登录的操作,下面来看做一下简单的配置,实现登录页登录
首先需要建一个类 BrowserSecurityConfig
, 针对浏览器的一些配置,写在这个类里面,然后继承 WebSecurityConfigurerAdapter
, spring提供的一个适配器, 然后重写里面的 configure(HttpSecurity http)
这个方法,具体代码如下:
1 | @Configuration |
配置完成之后,再来看一下效果,访问接口,效果如下:
这里就是一个默认的表单登录页面,还是和上面一样,输入用户名和密码就可以访问到接口了
本文用到的一些api,都传到了github上面,之后的文章到基于这个初始的项目 传送门
然后还有本文的这些代码也传了上去,传送门
然后之后文章中所对应的代码的分支名,都和文章标题的下标相同