• springSecurity认证功能初体验


    1. 创建springBoot工程

    Idea File–>New Module

    在这里插入图片描述

    这里直接使用Spring Initializr创建,点击Next

    在这里插入图片描述
    该页主要填写agv信息,Package可以根据自己需要修改

    在这里插入图片描述
    在这页搜索并添加Spring Web和Spring Security两项依赖

    在这里插入图片描述
    最后再确认一下Module信息就可以点击Finish了

    Idea有些联动项出来的值不是很智能,或者说合理,这个也可能跟版本有关系,大家创建Module时需要注意这些值是否是自己需要的,可以手动修改的。

    2. 添加接口

    这里就写一个最简单的GET接口

    @RestController
    public class HelloController {
    
        @GetMapping("/hello")
        public String helloSecurity(){
            return "helloSecurity";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3. 启动&测试

    在这里插入图片描述

    添加Spring Security依赖后,不做其它额外配置的情况,控制台会打印一串UUID
    访问我们之前编写的接口(这里我修改了服务的port为8085)http://localhost:8085/hello,会出现以下登陆页。

    在这里插入图片描述
    默认登陆用户名为user,密码为控制台打印出来的UUID,输入用户名密码后回车

    在这里插入图片描述
    登陆后再访问接口,不需要再次要求输入用户名密码。访问http://localhost:8085/logout注销登陆后,再次访问接口则需要再次输入用户名密码。

    在这里插入图片描述

    4. 修改登陆用户名密码

    4.1 yml配置文件

    在application.yml中添加security用户名密码配置,重启服务,控制台不会打印之前的默认UUID密码

    spring:
      security:
        user:
          name: user
          password: 123456
    
    • 1
    • 2
    • 3
    • 4
    • 5

    使用user/123456登陆并访问接口成功

    4.2 继承WebSecurityConfigurerAdapter

    //启动角色认证
    @EnableGlobalMethodSecurity(prePostEnabled = true)
    
    //启用security安全框架的安全校验
    @Configuration
    @EnableWebSecurity
    public class MyWebSecurity extends WebSecurityConfigurerAdapter {
    
        /**
         * 创建密码的加密类,算法多种,自行选择合适的算法
         */
    
        @Bean
        public PasswordEncoder passwordEncoder() {
            // 通过passwordEncoder的实现类,实现加密算法
            return new BCryptPasswordEncoder();
        }
    
    
        /**
         * 在方法中配置用户名和密码,作为用户登录的数据
         */
        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            // 给用户添加角色
            PasswordEncoder pe = passwordEncoder();
            auth.inMemoryAuthentication()
                    .withUser("user")
                    .password(pe.encode("123456"))
                    .roles("admin");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    将之前添加的yml配置注释掉,添加以上配置类,重启服务(控制台会打印UUID密码,但是没有用),通过user/123456登陆并访问接口成功

  • 相关阅读:
    iNFTnews|Web3的核心是什么?一些需要考虑的观点
    JDBC总结
    全网监控 nginx 部署 zabbix6.0
    Java 基础面试300题 (201-230)
    [6]https为什么安全
    Python采集世界疫情数据,绘制可视化动态地图,实时查询全球疫情数据(11月最新...)
    PY32F003F18P单片机概述
    Rn开发社区推荐组件
    jvm05
    malloc如何分配内存
  • 原文地址:https://blog.csdn.net/qq_41885819/article/details/126409754