SpringSecurity使用json登陆

Posted 鼓捣猫腻

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringSecurity使用json登陆相关的知识,希望对你有一定的参考价值。

   

一、创建项目并导入依赖

   

<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登陆

   

   

表单登陆

   

   

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

以上是关于SpringSecurity使用json登陆的主要内容,如果未能解决你的问题,请参考以下文章

SpringSecurity登陆失败后错误信息回显

SpringSecurity:认证和自定义登陆界面

找不到“org.springframework.security.oauth2.client.registration.ClientRegistrationRepository”类型的 <Spr

[SpringSecurity]web权限方案_自动登陆_原理分析和具体实现

SpringSecurity基本搭建

SpringSecurity:表单登陆