发表于: 2017-11-03 23:23:09
1 873
今天完成的事情:
登录接口;
根据用户输入的账户查找密码,然后与用户输入的密码进行匹配,,登录成功后将用户账户密码使用MD5加盐存入Cookie,
然后将用户登录的时间和账户进行des加密 存为Token.
@RequestMapping(value = "/login/v", method = RequestMethod.POST)
public String selectUserName(HttpServletRequest request, HttpServletResponse response, Model model, String userName) {
try {
// 数据库查找到的密码
String userKey = studentService.selectUser(request.getParameter("userName"));
loggerController.info("根据用户输入的账号找到数据库的密码"+ userKey);
// 用户输入的密码
String userPassword = request.getParameter("userPassword");
if (userKey.equals(userPassword)) {
// 将两者md5加盐加密存入cookie
Cookie cookie = new Cookie(Md5Salt.generate(userName), Md5Salt.generate(userPassword));
cookie.setMaxAge(60 * 60 * 24 * 7);
cookie.setPath("/");
response.addCookie(cookie);
loggerController.info("md5加盐的cookie" + cookie);
// 将用户账户 和登录时间加密生成Token放入Cookie
long time = System.currentTimeMillis();
String result = String.valueOf(time) + ":" + userName;
Cookie cookie1 = new Cookie("token", desUtil.encrypt(result));
cookie1.setMaxAge(60 * 60 * 24 * 7);
cookie1.setPath("/");
response.addCookie(cookie1);
loggerController.info("cookie的信息"+cookie1.getPath());
loggerController.info("des加米的token" + cookie);
response.setHeader("refresh", "0;url=/a/home");
return "/common/jump";
}
} catch (Exception e) {
e.printStackTrace();
loggerController.error(e.getMessage());
}
return "/regist/regist";
登录验证接口;用户带着token访问后,对用户的token进行Des解密,然后拆分为账户密码.
@RequestMapping(value = "/login")
public String enter(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, String userName, String userPassword) throws Exception {
String token = CookieUtile.getCookieValue(httpServletRequest, "token");
String s1 = null;
String s2 = null;
if (token != null) {
String mes = desUtil.decrypt(token);
String[] array = mes.split(":");
s1 = array[0];
s2 = array[1];
loggerController.info("登录时间:" + s1);
loggerController.info("账户" + s2);
httpServletResponse.setHeader("refresh", "0;url=/a/home");
return "/common/jump";
}
else { return "/regist/regist";}
}
更改拦截器...
将一个页面设置为不用登录可以访问,另外一个需要登录访问.
删除Cookie
public static void cleanCookie(HttpServletRequest request,HttpServletResponse response, String path){
Cookie[] cookies = request.getCookies();
try
{
for(int i=0;i<cookies.length;i++)
{
Cookie cookie = new Cookie(cookies[i].getName(), null);
cookie.setMaxAge(0);
cookie.setPath(path);
//根据你创建cookie的路径进行填写
response.addCookie(cookie);
}
}catch(Exception e)
{
e.printStackTrace();
}
}
}
@RequestMapping(value = "/u/login/exit",method = RequestMethod.GET)
public String exit(HttpServletRequest request, HttpServletResponse response) {
String path = "/";
CookieUtile.cleanCookie(request, response, path);
return "/regist/regist";}
将后面两个分别设置为学生列表和退出登录.
在浏览器输出字符串.
将项目部署到服务器.修改log4j输出日志位置, 又出现无法加载静态图片情况.
提交任务5.
明天计划完成的事情:
开始任务6,
遇到的困难:
出现了和之前一样的问题,没有输入账户密码自动登录,,我和师兄冷静分析了两个小时之后,,,认为是工具类问题,,,甚至还重新建立一个Cookie来证明......最后发现设置路径cookie的位置错了...
收获:
String mes = desUtil.decrypt(token);
String[] array = mes.split(":");
s1 = array[0];
s2 = array[1];
loggerController.info("登录时间:" + s1);
loggerController.info("账户" + s2);
拆分token,将一个数组里面内容拆分出来,分别赋值.
在浏览器输出内容.
任务进度:任务6步骤1
任务开始时间:2017-11-4
预计demo时间:2017-11-12
是否有延期风险:暂无
禅道:http://task.ptteng.com/zentao/task-view-12737.html
评论