iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >SpringSecurity中密码加盐怎么实现
  • 832
分享到

SpringSecurity中密码加盐怎么实现

2023-06-19 12:06:46 832人浏览 安东尼
摘要

这篇文章主要介绍“springSecurity中密码加盐怎么实现”,在日常操作中,相信很多人在SpringSecurity中密码加盐怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringSecur

这篇文章主要介绍“springSecurity中密码加盐怎么实现”,在日常操作中,相信很多人在SpringSecurity中密码加盐怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringSecurity中密码加盐怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

密码加盐

密码要加盐处理,这是常识。各个权限处理框架对此都有不同程度的支持,shiro、SpringSecurity都有自家的解决方案,SpringSecurity中有一个升级版的消息摘要:

BCryptPassWordEncoder

使用BCryptPasswordEncoder,即使相同的明文,生成的新的加密字符串都是不一样的,这样可以避免像在Shiro中那样我们自己配置密码的盐,SpringSecurity中使用BCryptPasswordEncoder的具体流程如下:

注册处理

在用户注册时,我们需要对密码进行处理,处理方式如下:

public int hrReg(String username, String password) {    //如果用户名存在,返回错误    if (hrMapper.loadUserByUsername(username) != null) {        return -1;    }    BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();    String encode = encoder.encode(password);    return hrMapper.hrReg(username, encode);}

通过BCryptPasswordEncoder中的encode方法对密码进行处理。

当用户注册成功之后,存在数据库中的密码就像下面这样:

SpringSecurity中密码加盐怎么实现

登录处理

密码加密处理之后,登录时候也要对密码进行处理,修改WEBSecurityConfig类的configure(AuthenticationManagerBuilder auth)方法,改为下面这样即可:

@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {    auth.userDetailsService(hrService).passwordEncoder(new BCryptPasswordEncoder());}

异常统一处理

如果不是前后端分离,一般出了异常都很容易处理,直接跳转到相关的错误页面即可,现在前后端分离,出了异常,就不能再跳转到错误页面了,但是我们可以返回JSON呀!我们可以对服务端可能发生的异常进行统一处理。

举个栗子:

当管理员想要删除某一个角色的时候,如果该角色下尚有关联的用户或者资源,此时由于数据库中外键的约束会导致删除失败(我的业务逻辑就是如此,这里小伙伴不要和我扯cascade (*^_^*)),当删除失败时,会抛出一个DataIntegrityViolationException异常,我将这种异常捕获后统一处理。

处理方式如下:

自定义异常处理类

自定义异常处理类CustomExceptionResolver,如下:

public class CustomExceptionResolver implements HandlerExceptionResolver {    @Override    public ModelAndView resolveException(httpservletRequest HttpServletRequest, HttpServletResponse response, Object o, Exception e) {        ModelAndView mv = new ModelAndView(new MappingJackson2jsonView());        Map<String, String> map = new HashMap<>();        map.put("status", "error");        if (e instanceof DataIntegrityViolationException) {            map.put("msg", "该角色尚有关联的资源或用户,删除失败!");        }        mv.addAllObjects(map);        return mv;    }}

在这里接收到系统抛出的各种异常,判断异常的类型,根据不同的类型,返回不同的提示,当然,我这里只有一种情况。

将CustomExceptionResolver注册为一个Bean

将CustomExceptionResolver注册为Bean就比较简单了,可以直接在类上添加@Component注解,也可以通过Java进行配置,如下:

@Configurationpublic class WebmvcConfig extends WebMvcConfigurerAdapter {    @Bean    public CustomExceptionResolver customExceptionResolver() {        return new CustomExceptionResolver();    }}

到此,关于“SpringSecurity中密码加盐怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: SpringSecurity中密码加盐怎么实现

本文链接: https://www.lsjlt.com/news/296110.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringSecurity中密码加盐怎么实现
    这篇文章主要介绍“SpringSecurity中密码加盐怎么实现”,在日常操作中,相信很多人在SpringSecurity中密码加盐怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringSecur...
    99+
    2023-06-19
  • SpringBootSecurity密码加盐实例
    目录修改加密和验证方法自定义 DaoAuthenticationProvider注册到ProciderManager中 修改加密和验证方法 public stati...
    99+
    2023-02-08
    SpringBoot Security密码加盐 SpringBoot Security
  • Java利用MD5加盐实现对密码进行加密处理
    目录前言Java常用加密手段场景加密手段应用场景MD5加密的风险什么是盐引入MD5工具类编写MD5加盐工具类测试盐加密强度注册加密登录解密总结前言 在开发的时候,有一些敏感信息是不能...
    99+
    2023-02-22
    Java MD5 密码加密 Java 密码加密 Java MD5 Java 加密
  • SpringSecurity如何实现升级密码加密方式详解
    目录本章内容密码加密方式怎么升级升级方案源码实战第一种方式: Spring Bean他是怎么自动升级到BCrypt加密方式的第二种方式: 多继承接口方式第三种方式: HttpSecu...
    99+
    2023-01-04
    Spring Security升级密码加密 Spring Security密码加密
  • SpringSecurity BCrypt密码加密和解密的方法是什么
    本篇内容主要讲解“SpringSecurity BCrypt密码加密和解密的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringSecurity BCrypt...
    99+
    2023-07-06
  • nodejs中怎么实现密码加密处理操作
    这篇文章将为大家详细讲解有关nodejs中怎么实现密码加密处理操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、关于node加密模块crypto的介绍其...
    99+
    2024-04-02
  • Python中怎么加密密码
    今天就跟大家聊聊有关Python中怎么加密密码,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。如何在Python中加密密码加密密码会将密码编码为随机字符序列。使用base64.b64e...
    99+
    2023-06-16
  • PHP加盐实现函数的方法是什么
    今天小编给大家分享一下PHP加盐实现函数的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。第一步:生成一个随机的盐值...
    99+
    2023-07-05
  • golang代码混淆加密怎么实现
    在 Go 语言中,代码混淆和加密是通过不同的技术实现的。代码混淆是通过对代码进行变换和重组,使得代码难以被理解和分析。加密是通过对代...
    99+
    2023-10-27
    golang
  • SpringSecurity基于散列加密方案实现自动登录
    目录前言一. 自动登录简介1. 为什么要自动登录2. 自动登录的实现方案二. 基于散列加密方案实现自动登录1. 配置加密令牌的key2. 配置SecurityConfig类3. 添加...
    99+
    2024-04-02
  • springboot项目数据库密码怎么实现加密
    这篇文章主要介绍了springboot项目数据库密码怎么实现加密的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot项目数据库密码怎么实现加密文章都会有所收获,下面我们一起来看看吧。方案一、使用d...
    99+
    2023-06-08
  • c#中base64加密怎么实现
    在C#中实现Base64加密可以使用Convert.ToBase64String方法,示例如下: string plainText ...
    99+
    2024-04-08
    c#
  • SpringSecurity实现用户名密码登录流程源码详解
    目录引言探究登录流程校验用户信息保存引言 你在服务端的安全管理使用了 Spring Security,用户登录成功之后,Spring Security 帮你把用户信息保存在 Sess...
    99+
    2024-04-02
  • SpringBoot中怎么实现api加密
    这篇文章将为大家详细讲解有关SpringBoot中怎么实现api加密,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是RSA加密首先我们当然是了解RSA加密RSA加密是一种非对称加密。可以...
    99+
    2023-06-20
  • c#中怎么实现sm4加密
    在C#中实现SM4加密可以通过使用第三方库来实现。一个常用的库是Bouncy Castle,可以通过NuGet安装。 首先,安装Bo...
    99+
    2024-04-02
  • php如何实现密码加密
    这篇文章给大家分享的是有关php如何实现密码加密的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php密码加密方法:1、使用password_hash(),语法“password_hash(密码,PASSWORD_...
    99+
    2023-06-20
  • vuejs如何实现密码加密
    这篇文章主要为大家展示了“vuejs如何实现密码加密”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vuejs如何实现密码加密”这篇文章吧。vuejs实现密码加密的方法:1、通过npm引入“cry...
    99+
    2023-06-25
  • python密码加密与解密的实现
    目录一、对称加密1.1 安装第三方库 - PyCrypto1.2 加密实现二、非对称加密三、摘要算法3.1 md5加密3.2 sha1加密3.3 sha256加密3.4 sha384...
    99+
    2023-02-07
    python 密码加密 python 密码解密
  • Go实现凯撒密码加密解密
    目录1 凯撒密码加密设计思想2 Go实现2.1 导入包2.2 编写 caesar 方法3 凯撒密码解密4 其他实现5 测试总结1 凯撒密码加密 凯撒密码(英语:Caesar ciph...
    99+
    2024-04-02
  • DynamoDB中怎么实现数据加密
    在DynamoDB中实现数据加密可以通过多种方式完成,以下是一些常用的方法: 使用客户端端加密:在应用程序中使用客户端端加密技术对...
    99+
    2024-04-09
    DynamoDB
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作