持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情
注销功能和md5密码加密
MD5 算法是一个散列函数。这意味着它会为它接受的任何输入生成一个 32 个十六进制字符串。您可以将密码、段落或整个百科全书转换为相同长度的 MD5 哈希。作为一般规则,MD5 算法是不可逆的,就像大多数散列函数一样。它将一组无限的值散列到 32 个十六进制字符的固定摘要中。由于多个条目可以具有相同的 MD5 值,因此没有对其进行解密的算法方法。
1.控制器
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.修改注销按钮
3.密码md5处理
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字段
5.修改登录判断
6.重启项目并登录
账户名:m8/test可以正常登录