SpringSecurity设置登录账号密码的三种方式

这篇具有很好参考价值的文章主要介绍了SpringSecurity设置登录账号密码的三种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、SpringBoot整合SpringSecurity:

1.新建SpringBoot工程,引入SpringSecurity依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

2.编写一个测试Controller

@RestController
@RequestMapping("/test")
public class HelloController {

    @GetMapping("hello")
    public String hello() {
        return "hello";
    }
}

SpringSecurity设置登录账号密码的三种方式

 3.修改访问端口(默认8080)

SpringSecurity设置登录账号密码的三种方式

4.启动SpringBoot工程,访问http://localhost:8001/test/hello

SpringSecurity设置登录账号密码的三种方式

 如上自动跳转到登录页面,输入账号user,密码在控制台输出,如下所示

SpringSecurity设置登录账号密码的三种方式

 5.查看是否登录成功(如下所示即为登录成功)

SpringSecurity设置登录账号密码的三种方式

 二、自定义账号密码的三种方式

1、方式一:通过配置文件

spring.security.user.name=admin
spring.security.user.password=111111

SpringSecurity设置登录账号密码的三种方式

 如上所示,修改配置文件后,重新启动服务及修改为上面的登录账号和密码

2.方式二:通过配置类

2.1.新建一个配置类,继承 WebSecurityConfigurerAdapter,并重写configure()方法

package com.atguigu.securitydemo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

/**
 * @author cy
 * @create 2022-08-16 15:33
 */
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
        String password = passwordEncoder.encode("123");
        auth.inMemoryAuthentication().withUser("lucy").password(password).roles("admin");
    }

    @Bean
    PasswordEncoder password() {
        return new BCryptPasswordEncoder();
    }
}

3.方式三:自定义编写配置类(常用)

第一步:编写配置类,设置使用那个userDetailsService实现类

package com.atguigu.securitydemo.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

/**
 * @author cy
 * @create 2022-08-16 15:33
 */
@Configuration
public class SecurityConfigTest extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserDetailsService userDetailsService;

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService).passwordEncoder(password());
    }

    @Bean
    PasswordEncoder password() {
        return new BCryptPasswordEncoder();
    }
}

第二步:编写实现类,返回User对象,User对象有用户名密码和操作权限

注意:@Service("userDetailsService")里的userDetailsService要和SecurityConfigTest类中注入的private UserDetailsService userDetailsService保持一致。

package com.atguigu.securitydemo.service;

import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author cy
 * @create 2022-08-16 15:51
 */
@Service("userDetailsService")
public class MyUserDetailService implements UserDetailsService {

    @Override
    public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
        List<GrantedAuthority> auths = AuthorityUtils.commaSeparatedStringToAuthorityList("role");
        return new User("mary",new BCryptPasswordEncoder().encode("123"),auths);
    }
}

暂时这样写,实际需要通过查询数据库,完善用户信息。因为User实现了UserDetails接口,所以返回值直接new一个User对象。

SpringSecurity设置登录账号密码的三种方式

 三、Demo地址

securitydemo: SpringSecurityDemo文章来源地址https://www.toymoban.com/news/detail-429145.html

到了这里,关于SpringSecurity设置登录账号密码的三种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2.k8s账号密码登录设置

    前面已经搭建好了k8s集群,现在设置下账号密码登录,k8s默认使用token登录,很麻烦,这里修改下配置。 由于重启会导致所有的进程丢失,这里写了个集群重启脚本,需要hadoop1、hadoop2、hadoop3三台集群机器可以相互ssh命令想通才可以执行脚本。这里我在hadoop1上建立脚本如下

    2024年02月09日
    浏览(48)
  • 路由器设置PPPOE密码后验证失败的三种原因

    若使用路由器进行PPPOE拨号时出现无法连接,系统日志提示密码验证失败,具体检查和解决方法如下: 一、可能是ISP(网络服务提供商)服务器故障,如果是这样请直接致电ISP询问并解决问题。 二、请确认输入的用户名和密码是否正确,是不是因为不小心开启了Caps Lock键,这

    2024年02月08日
    浏览(41)
  • VS2022设置编码方式为utf-8的三种方式

    此方法同样适用Visual Studio的其他版本 在字符串前面使用 u8 ,可保证解析时安装utf-8的方式解析 安装插件:Force UTF-8 更改VS的编码方案 首先需要打开高级保存选项 然后打开 文件 — 高级保存选项 即可进行设置 参考链接: 探究Visual Studio中的乱码问题 - CSDN

    2024年02月11日
    浏览(54)
  • 树莓派设置开机自启动的三种方式

    一. 配置rc.local文件方式 编辑/etc/rc.local文件 在文件中exit 0 之前添加需要执行的命令,文件路径使用绝对路径,如: 注意:如果程序是阻塞的,则必须加上符号,表示在后台运行,否则系统无法启动 重启系统,就可以生效了 二. 新建desktop文件设置树莓派开机启动项 这种方式

    2024年02月17日
    浏览(47)
  • Docker系列---【Docker设置时区的三种方式】

    将宿主机与容器的时间进行挂载,直接使用宿主机的时区

    2024年02月17日
    浏览(45)
  • echarts饼图自定义设置颜色的三种方式

    第一种方式 option下 整体代码如下: 效果如下: 第二种方式 series下 整体代码如下: 效果如下: 第三种方式 data下 整体代码如下: 效果如下:

    2024年02月16日
    浏览(46)
  • 路由器连接电脑的三种方式和设置介绍

    路由器怎么连接电脑进行设置呢?目前随着电脑、智能手机、平板电脑等网络设备的普及,人们对网络的需求日益增加,因此推动了路由器的广泛使用。不过很多大多数用户不知道怎样把路由器和电脑连接起来,然后进行后续的配置。 路由器与电脑之间的连接方式有两种,一

    2024年02月08日
    浏览(43)
  • centos7设置时区,时间+时间同步的三种方式

    1.1查看当前时区: 1.2查看时间命令: 1.3选择时区命令 设置timezone的时区 3.1安装ntp 3.2启动ntp服务 3.3查看ntp服务 3.4修改ntp.conf文件 3.5重启服务 3.6检查同步状态 3.7执行硬件时间向软件时间同步 3.8查看当前时间 4.1最简单的方法,让所有集群中的主机跟某个时间服务器的 时间同步

    2024年02月04日
    浏览(48)
  • 【Maven】依赖管理—导入jar包的三种方式、依赖范围设置

    一、使用坐标导入 jar 包  二、使用坐标导入 jar 包 – 快捷方式  三、使用坐标导入 jar 包 – 自动导入  四、依赖范围 1、在 pom.xml 中编写 dependencies 标签 2、在 dependencies 标签中 使用 dependency 引入坐标 3、定义坐标的 groupId,artifactId,version 4、点击刷新按钮,使坐标生效 1、

    2024年02月16日
    浏览(51)
  • win10共享文件怎么设置账号密码访问,访问无法弹出登录窗口怎么解决

    环境:window10专业版 前情提要 笔者设置共享文件账号时遇到的问题:客户端访问报错“网络错误,Windows无法访问\\\\192.168.x.x你没有权限访问,请与网络管理员联系请求访问权限”,无法弹出账号密码登录窗口。 解决:客户端菜单查找“凭据管理器”--添加Windows凭据--输入共享

    2024年02月05日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包