天天看點

Shiro整合springboot項目實戰(前端是使用jsp實作)---注冊功能

代碼實作

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

userDao.xml

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

效果

前端頁面:

Shiro整合springboot項目實戰(前端是使用jsp實作)---注冊功能

資料庫儲存的資料:

Shiro整合springboot項目實戰(前端是使用jsp實作)---注冊功能

這裡的密碼是經過md5+salt+hash一系列操作形成的。