IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> spring security 初探,UserDetails相关解析 -> 正文阅读

[Java知识库]spring security 初探,UserDetails相关解析

1.spring security 初探

spring security主要是一套安全框架,是用于解决用户认证授权的功能,认证Authentication即表示对(用户/系统/设备)登录认证也就是说 认证是谁的问题?先认证之后再授权Authorization,授权即表示当前认证过的用户,能做什么?有那些访问资源的权限。

2.spring security demo

spring security能够和spring boot项目做很完美的兼容非常方便,需要在pom文件中引入jar包即可,直接运行就好

 <dependencies>
        <!--  spring security starter 必须  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <!--  actuator 指标监控  非必须 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- spring mvc  servlet web  必须  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

    </dependencies>

创建项目启动项运行会看到日志,默认账号为user 密码为控制打印出来,很明显这无法用于生产,应该账号密码是从数据库查询而来,而不是由spring security在内存中默认给我们生成一个。
在这里插入图片描述
细心的朋友可以发现,打印日志中可看出,密码是由UserDetailsServiceAutoConfiguration 配置类生成的,我们就从它开始顺藤摸瓜来一探究竟。

3.UserDetailsServiceAutoConfiguration

阅读源码可知,在内存中自定义了一个用户,也就是说如果我们需要用户必须先观察UserDetails
在这里插入图片描述

4.UserDetails

UserDetails源码
从上述源码可知从上面
UserDetailsService 可以知道最终交给Spring Security的是UserDetails 。该接口是提供用户信息的核心接口。该接口实现仅仅存储用户的信息。后续会将该接口提供的用户信息封装到认证对象Authentication中去。UserDetails 接口默认提供了:

  • 用户的权限集, 默认需要添加ROLE_ 前缀
  • 用户的加密后的密码, 不加密会使用{noop}前缀
  • 应用内唯一的用户名
  • 账户是否过期
  • 账户是否锁定
  • 凭证是否过期
  • 用户是否可用

我们分别跟踪UserDetails接口查询看源码中默认的实现类会看到User类
在这里插入图片描述
该User类算是Spring security对用户的默认封装。

5.demo默认演示

上述启动了一个spring security demo 暂时不改变默认密码 直接访问http://localhost:8080/actuator/
会发现被spring security 默认给拦截了页面就不贴了,需要输入user 和 控制台生成的密码才能继续访问到,F12会发现,登录之后的访问资源请求,会携带登录成功返回cookie 。

6.配置文件自定义用户名密码

因为spring security每次启动都会在内存中创建用户,我们如果想不用默认username password想自行配置,则需要用配置的账户密码来登录
在这里插入图片描述

7.关闭spring security功能

如果引入了jar包,但是想关闭功能,估计也没人这么做。这里提一下启动类中配置一个Class即可
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 11:43:27  更:2022-05-10 11:45:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:11:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码