关于Spring Security


前言

提示:这里可以添加本文要记录的大概内容:

Spring Security是主要解决认证(Authenticate)和授权(Authorization)的框架。


提示:以下是本篇文章正文内容,下面案例可供参考

一、使用步骤

1.添加依赖

在Spring Boot项目中,添加spring-boot-starter-security依赖项。

注意:以上依赖项是带有自动配置的,一旦添加此依赖,整个项目中所有的访问,默认都是必须先登录才可以访问的,在浏览器输入任何此服务的URL,都会自动跳转到默认的登录页面。

默认的用户名是user,默认的密码是启动项目时自动生成的随机密码,在服务器端的控制台可以看到此密码。当登录后,会自动跳转到此前尝试访问的页面。

Spring Security默认使用Session机制保存用户的登录状态,所以,重启服务后,登录状态会消失。在不重启的情况下,可以通过 /logout 访问“退出登录”页面,确定后也可以清除登录状态。

2. 关于BCrypt

在Spring Security中,内置了BCrypt算法的工具类,此工具类可以实现使用BCrypt算法对密码进行加密、验证密码的功能。

BCrypt算法使用了随机盐,所以,多次使用相同的原文进行加密,得到的密文都将是不同的,并且,使用的盐值会作为密文的一部分,也就不会影响验证密码了。

重点:在Spring Security框架中,定义了PasswordEncoder接口,表示“密码编码器”,并且使用BCryptPasswordEncoder实现了此接口。

3.创建PasswordEncoder对象

通常,应该自定义配置类,在配置类中使用@Bean方法,使得Spring框架能创建并管理PasswordEncoder类型的对象,在后续使用过程中,可以自动装配此对象。

在根包下创建config.SecurityConfiguration类:

@Configuration
@Slf4j
public class SecurityConfiguration {
   
    
    @Bean
    public PasswordEncoder passwordEncoder(){
   
        log.info("创建密码编码器:BCryptPasswordEncoder");
        return new BCryptPasswordEncoder();
    }
}

然后,在需要使用此对象的类中,自动装配即可,例如,在AdminServiceImpl类中添加:

@Autowired
private PasswordEncoder passwordEncoder;

在此类中,就可以使用到以上属性,例如:

String rawPassword = admin.getPassword();
String encodedPassword = passwordEncoder.encode(rawPassword);
admin.setPassword(encodedPassword);

注意:一旦在Spring容器中已经存在PasswordEncoder对象,Spring Security会自动使用它,所以,会导致默认的随机密码不可用(你提交的随机密码会被加密后再进行对比,而Spring Security默认的密码并不是密文,所以对比会失败)。

<

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值