加密数据库密码
例如:
加密工具类
package cn.itsource.aisell.util;
import org.apache.shiro.crypto.hash.SimpleHash;
public class MD5Util {
public static String ALGORITHMNAME = "MD5";
public static String SALT = "itsource";
public static int HASHITERATIONS = 10;
//对密码进行加密的方法
public static String createMd5Str(String pwd){
SimpleHash simpleHash = new SimpleHash(ALGORITHMNAME, pwd, SALT,HASHITERATIONS);
return simpleHash.toString();
}
}
新增中的密码加密
@Override
public void save(Employee employee) {
if(employee.getId() == null){
//对员工设置加密之后的密码
employee.setPassword(MD5Util.createMd5Str(employee.getPassword()));
}
//重新保存到数据库 新增或者修改都要调用
super.save(employee);
}
添加登陆页面
1.准备一个login.jsp
2.在login.jsp中准备一个form表单
3.提交登录表单,调用下面的方法去提交
function submitForm(){
//提交表单到后台程序
$("#loginForm").form('submit',{
url:'/login',
success:function(result){
//返回json字符串 {success:true,msg:'xxx'}
//$ jquery里面对象
result = $.parseJSON(result);
if(result.success){
//跳转主页
location.href = "/main";
}else{
$.messager.alert("温馨提示", result.msg, "info");
}
}
})
}
4.在controller层处理登陆认证
取到当前主体,判断是否登陆过,如果登录过,就直接访问,如果没有认证,就进行认证
注销功能
添加按钮,然后发送请求到controller处理
<div data-options="region:'north',split:true" style="height:120px;">
<h1 style="margin-bottom: 10px">源码时代智销系统</h1>
<div style="text-align:right;margin-right: 10px">
欢迎<font color="red"><shiro:principal property="username"/></font>进入
<a href="/logout">注销</a>
</div>
</div>
//注销
@RequestMapping("/logout")
public String logout(){
//注销
Subject subject = SecurityUtils.getSubject();
subject.logout();
//跳转
return "redirect:/login";
}
回车登陆
在页面绑定一个键盘事件,如果检测到是Enter(回车键) 就提交表单
$(document.documentElement).on("keyup", function(event) {
//console.debug(event.keyCode);
//获取按键
var keyCode = event.keyCode;
console.debug(keyCode);
if(keyCode===13){
submitForm();
}
});
登录过期的问题
原因导致:如果我们已经注销了系统,在其他的页面里面点击操作,会出现登录页面嵌套
解决方案: 让子窗口的页面地址 赋值给顶级的窗口的地址
if(top!=window){
//子窗口 把当前子窗口的路径 赋值顶层窗口的路径
top.location.href = window.location.href;
}
转载:https://blog.csdn.net/y1770464784/article/details/102465428
查看评论