在项目的会遇到请求后台页面会出现未登录跳转到登录页面,登录完成后再跳转回登录页面,又于项目登录是采用ajax编写的,只需在登录成功后将需要跳转的页面返回就可以.
后台登录控制器
@PostMapping(value = {"/admin/login"})
@ResponseBody
public LayResponse login(@RequestParam Map param, HttpServletRequest req) {
//用户认证信息
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(param.get("username"), param.get("password"));
LayResponse response = new LayResponse();
response.success("登录成功");
try {
//进行验证,这里可以捕获异常,然后返回对应信息
subject.login(usernamePasswordToken);
SavedRequest savedRequest= WebUtils.getSavedRequest(req);//将需要调整的页面传回前段,前段进行跳转
response.data(savedRequest);
} catch (UnknownAccountException e) {
response.error("用户名不存在!");
} catch (AuthenticationException e) {
response.error("账号或密码错误!");
} catch (AuthorizationException e) {
response.error("没有权限");
} catch (Exception e) {
response.error("其他错误");
}
return response;
}
前台layui登录
//监听提交
form.on('submit(login)', function (data) {
$.post("/admin/login", data.field, function (res) {
if (res.code == 0) {
if(res.data!=null){
if(res.data.method=='GET'){
location.href =res.data.requestUrl;
return false;
}
}
location.href = '/admin/index/index'
} else {
layer.msg(res.msg, {icon: 5});
}
});
return false;
});
登录成功返回的json