一.登录
1.1 准备登录页面(随便找一个即可)
位置:webapp/WEB-INF/views/login.jsp
js代码部分
//登录功能
function submitForm(){
$('#loginForm').form('submit', {
url:"/login",
onSubmit: function(){
return $(this).form('validate');
},
success:function(data){
var result = JSON.parse(data);
if(result.success){
//成功后跳转到主页面
window.location.href = "/main";
}else{
$.messager.alert("提示",result.msg,"error");
}
}
});
}
1.2 LoginController功能
1.2.1 两个login方法
一个用于跳转(/login,get),一个用于登录(/login,post)
@RequestMapping(value="/login",method = RequestMethod.GET)
public String index(){
return "login";
}
/**
* 是一个Ajax的登录请求,它会返回{success:true/false,msg:xxx}
* @return
*/
@RequestMapping(value="/login",method = RequestMethod.POST)
@ResponseBody
public JsonResult login(String username, String password){
...
}
1.2.2完成登录的功能
@RequestMapping(value="/login",method = RequestMethod.POST)
@ResponseBody
public JsonResult login(String username, String password){
//1.拿到当前用户
Subject currentUser = SecurityUtils.getSubject();
//2.如果没有登录,进行登录
if(!currentUser.isAuthenticated()){
//3.准备令牌
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
//4.实现登录
try {
currentUser.login(token);
} catch (UnknownAccountException e) {
e.printStackTrace();
return new JsonResult(false, "用户名不存在!");
} catch (IncorrectCredentialsException e) {
e.printStackTrace();
return new JsonResult(false, "账号或密码错误!");
} catch (AuthenticationException e) {
e.printStackTrace();
// System.out.println("就是登录不了(请联系程序员...)");
return new JsonResult(false, "网络出错(联系管理员)!");
}
}
//登录成功成功令牌
return new JsonResult();
}
1.3 登录细节
1.3.1 数据库的密码设置
要有一套自己的密码规则(md5,10次,盐值:itsource)
a.MD5Util
public class MD5Util {
public static final String SALT = "itsource";
public static final Integer HASHITERATIONS = 10;
//密码加密
public static String changePwd(String password){
SimpleHash hash = new SimpleHash("MD5",password,SALT,HASHITERATIONS);
return hash.toHex();
}
}
b.添加用户密码加密
controller或者service中都可以进行[我们选择service]</