SpringSecurity使用json登陆

让人想犯罪 __ 提交于 2020-08-15 10:07:41

   

一、创建项目并导入依赖

   

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-security</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

   

   

二、相关配置和代码

   

2.1)application.properties配置密码

   

注:我这里从简,可以先去看https://www.cnblogs.com/fernfei/p/12185186.html如何配置密码

   

spring.security.user.name=admin

spring.security.user.password=123

   

2.2)创建自定义的身份过滤类

   

   

2.3)写json登陆之前先看一下源码,了解一下它是如何表单登录的

   

2.3.1)在Idea中连按连下shift键,搜索UsernamePasswordAuthenticationFilter类

   

   

2.3.2)进入后再按Ctrl+F12可以查看该类的所有方法

   

   

2.3.3)进入方法

   

   

   

2.3.4)我们只需要在request.getParameter()那里重写一下不就可以实现json登陆

   

重写attemptAuthentication(HttpServletRequestrequest,HttpServletResponseresponse)方法

   

只需要复制父类的方法,多加一个判断json的方法。就能同时支持key-value形式可json形式的参数了

   

   

   

3)创建SecurityConfig配置类

   

   

注:自定义的过滤类和security原来那个表单登陆过滤设置是分开的

   

体现在filter.setFilterProcessesUrl()和loginProcessingUrl

因此表单登陆和json登陆的,successHandler判断也要分开写,

一会下面有效果图也可以印证这一点

   

   

4)创建controller

   

   

   

三、效果图

   

   

测试工具PostMan

   

访问被保护的hello路径

   

   

json登陆

   

   

表单登陆

   

   

由此证明这俩个登陆的配置要分开设置

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!