使⽤springSecurity+JWT实现前后端分离登录(纯代码⽆原理)构建项⽬
如果你看到了该⽂章说明对spring框架有⼀定了解,相信你已经知道如何通过springboot进⾏项⽬构建
springboot想要⽀持安全验证以及web⽀持只需要在pom(如果是maven)⽂件中引⼊以下starter
maven
//安全包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
//web包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
gradle
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
启动项⽬
1. 浏览器输⼊ localhost:8080 默认情况下控制台会输出⼀串密码串
springboot aop2. security 默认情况下会拦截所有请求 并⽣成默认登录页
3. 输⼊⽤户 user 密码就是控制台中的密码串
4. 输⼊成功后出现以下页⾯(404是因为我们并没有配置/路由)(如果出现以下页⾯表⽰登录成功)
5. 默认情况下security使⽤是表单登录通过session 与cookie 进⾏认证的
6. 我们打开浏览器控制台发现有⼀段cookie
7. 我们删除该cookie刷新浏览器发现⼜让重新登录 (说明我们猜想是正确的)
如何⾃定义默认的登录名与密码呢?
只需要在l中配置即可
⾃定义安全认证与授权
1. 认证: 认证即系统通过⽤户凭据 (密码),token,密钥等进⾏⾝份认证的过程 证明你是谁
2. 授权: 系统,通过认证以后给与你⼀定权限,例如⼀个按钮的点击等,赋予你能⼲什么的权限
在springboot 中⾃定义security只需要继承 WebSecurityConfigurerAdapter 并且添加 @EnableWebSecurity 注解即可配置security 我们创建⼀个类JwtSecurityConfig 继承 WebSecurityConfigurerAdapter
实现config ⽅法
可能有些⼈要问为什么不是下图:
这是应为formLogin是表单登录基于session-cookie机制进⾏⽤户认证的,⽽前后端分离⼀般使⽤jwt 即⽤户状态保存在客户端中,前后端交互通过api接⼝ ⽆session⽣成,所以我们不需要配置formLogin
我们需要禁⽤session
发现没有登录页⾯,⽽是返回403页⾯,这是因为security 检测到项⽬中有WebSecurityConfigurerAdapter 的实现类并配置了config,所以它认为⽤户要⾃定义security所以默认的表单认证失效(除⾮你配置了formLogin) ⾄于403 是因为我们配置了所有路径都需要通过认证(包括/路径)
返回403 正是我们想要的,说明了security起作⽤了,拦截保护了所有请求,同时还赋予我们⾃定义功能
创建⼀个controller (添加⼀个⽅法login 作为登录⼊⼝)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论