OA系统开发(十)

118 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情

注销功能和md5密码加密
MD5 算法是一个散列函数。这意味着它会为它接受的任何输入生成一个 32 个十六进制字符串。您可以将密码、段落或整个百科全书转换为相同长度的 MD5 哈希。作为一般规则,MD5 算法是不可逆的,就像大多数散列函数一样。它将一组无限的值散列到 32 个十六进制字符的固定摘要中。由于多个条目可以具有相同的 MD5 值,因此没有对其进行解密的算法方法。

1.控制器

image.png

package com.imooc.oa.controller;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "LogoutServlet", value = "/logout")
public class LogoutServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getSession().invalidate();
        response.sendRedirect("/login.html");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

代码说明:

  • request.getSession().invalidate():清除session
  • response.sendRedirect("/login.html"):跳转到login页面

2.修改注销按钮

image.png

3.密码md5处理

image.png

package com.imooc.oa.utils;

import org.apache.commons.codec.digest.DigestUtils;

public class MD5Utils {
    /**
     * 对源数据生成MD5摘要
     * @param source 源数据
     * @return MD5摘要
     */
    public static String md5Digest(String source){
        return DigestUtils.md5Hex(source);
    }

    /**
     * 对源数据加盐混淆后生成MD5摘要
     * @param source 源数据
     * @param salt 盐值
     * @return MD5摘要
     */
    public static String md5Digest(String source , Integer salt){
        //源数据混淆
        char[] ca = source.toCharArray();//字符数组
        for(int i = 0 ; i < ca.length ; i++){
            ca[i] = (char)(ca[i] + salt);
        }
        String target = new String(ca);
//        System.out.println(target);
        String md5 = DigestUtils.md5Hex(target);
        return md5;
    }

   
}

4.实体entity

新增salt字段 image.png

5.修改登录判断

image.png

6.重启项目并登录

image.png 账户名:m8/test可以正常登录