Shiro整合springboot项目实战(前端是使用jsp实现)---注册功能

该博客介绍了如何在用户注册过程中使用MD5和盐值进行密码加密存储,以提高安全性。在前端展示用户注册表单,后端通过控制器接收用户信息,调用服务层进行业务处理,包括生成随机盐、对密码进行MD5加盐哈希,然后将加密后的密码保存到数据库。
摘要由CSDN通过智能技术生成

代码实现

register.jsp

<%@page contentType="text/html; UTF-8" pageEncoding="utf-8" isELIgnored="false" %>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>用户注册</h1>
<form action="${pageContext.request.contextPath}/user/register" method="post">
    用户名:<input type="text" name="username"><br>
    密码:<input type="text" name="password"> <br>
    <input type="submit" value="立即注册">
</form>
</body>
</html>

UserController:

 /**
     * 用户注册
     * @param user
     * @return
     */
    @RequestMapping("register")
    public String register(User user){

        try {
            userService.register(user);
            return "redirect:/login.jsp";
        } catch (Exception e) {
            e.printStackTrace();
            return "redirect:/register.jsp";
        }
    }

userServiceImpl:

 @Autowired
    private UserDao userDao;
    @Override
    public void register(User user) {
//        处理业务,调用Dao
//        1,生成随机盐
        String salt = saltUtils.getSalt(8);
        System.out.println(salt);
//        2,将随机盐保存到数据
        user.setSalt(salt);
//        3,对铭文的密码进行MD5+SALT+HASH
        Md5Hash md5Hash = new Md5Hash(user.getPassword(),salt,1024);
        System.out.println(md5Hash.toHex());
//        4,将生成的密码保存到数据库
        user.setPassword(md5Hash.toHex());
//        5,调用dao,保存到数据库中
        userDao.save(user);
    }

saltUtils:生成随机盐的工具类

package shiro.demo.Untils;

import java.util.Random;

public class saltUtils {
    /**
     * 生成salt的静态方法
     * @param n
     * @return
     */
    public static String getSalt(int n) {
        char[] chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#$%^&*()".toCharArray();
        StringBuilder sb= new StringBuilder();
        for (int i = 0; i < n; i++) {
            char aChar = chars[new Random().nextInt(chars.length)];
            sb.append(aChar);
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        String salt = getSalt(8);
        System.out.println(salt);
    }
}

userDao

void save(User user);

userDao.xml

<insert id="save" parameterType="User">
    insert into t_user values(#{id},#{username},#{password},#{salt})
   </insert>

效果

前端页面:
在这里插入图片描述
数据库保存的数据:
在这里插入图片描述
这里的密码是经过md5+salt+hash一系列操作形成的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值