发表于: 2017-10-08 20:52:09
1 816
一、今日完成
1.把MD5加密、cookie、session、登录验证等写成工具类,以便controller调用相应方法;
(1)
package com.pudica.task05.utils;
import sun.misc.BASE64Encoder;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* Created by gl1687 on 2017/10/8.
*/
@SuppressWarnings("restriction")
public class MD5Encryption {
public static String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException{
//确定计算方法
MessageDigest md5=MessageDigest.getInstance("MD5");
BASE64Encoder base64en = new BASE64Encoder();
//加密后的字符串
String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));
return newstr;
}
public static boolean checkpassword(String newpasswd,String oldpasswd) throws NoSuchAlgorithmException, UnsupportedEncodingException{
if(EncoderByMd5(newpasswd).equals(oldpasswd))
return true;
else
return false;
}
}
(2)
package com.pudica.task05.utils;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by gl1687 on 2017/10/8.
*/
public class CookieUtils {
public static void addCookie(HttpServletResponse response, Cookie cookie){
response.addCookie(cookie);
return ;
}
public static void addCookie(HttpServletResponse response, String cookieName,
String cookieValue, String cookieDomain, String cookiePath,
int maxAge, boolean secure){
if (cookieName != null && !cookieName.equals("")){
if (cookieValue == null){
cookieValue = "";
}
Cookie newCookie = new Cookie(cookieName, cookieValue);
if (cookieDomain != null)
newCookie.setDomain(cookieDomain);
if (maxAge > 0)
newCookie.setMaxAge(maxAge);
newCookie.setSecure(secure);
if (cookiePath != null)
newCookie.setPath(cookiePath);
else
newCookie.setPath("/");
addCookie(response, newCookie);
}
}
public static void addCookie(HttpServletResponse response, String cookieName,
String cookieValue, String cookieDomain){
addCookie(response, cookieName, cookieValue, cookieDomain, "/", 60, false);
}
public static Cookie getCookie(HttpServletRequest request, String cookieName){
Cookie[] cookies = request.getCookies();
if (cookieName == null || cookieName.equals("") || cookies == null)
return null;
for (Cookie cookie : cookies) {
if (cookieName.equals(cookie.getName()))
return (Cookie)cookie;
}
return null;
}
public static String getCookieValue(HttpServletRequest request, String cookieName){
Cookie cookie = getCookie(request, cookieName);
if (cookie == null)
return null;
else{
return cookie.getValue();
}
}
public static void deleteCookie(HttpServletResponse response, Cookie cookie){
if (cookie != null){
cookie.setPath("/");
cookie.setMaxAge(0);
cookie.setValue(null);
}
response.addCookie(cookie);
}
public static void deleteCookieByName(HttpServletRequest request,
HttpServletResponse response, String cookieName){
Cookie cookie = getCookie(request, cookieName);
if (cookie != null && cookie.getName().equals(cookieName))
deleteCookie(response, cookie);
}
public static void editCookie(HttpServletRequest request, HttpServletResponse response,
String cookieName, String cookieValue, String cookieDomain){
Cookie cookie = getCookie(request, cookieName);
if (cookie != null && cookieName != null && !cookieName.equals("") &&
cookie.getName().equals(cookieName)){
addCookie(response, cookieName, cookieValue, cookieDomain);
}
}}
(3)
package com.pudica.task05.utils;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by gl1687 on 2017/10/8.
*/
public class SessionInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//基于cookie的session认证
String isLogin = (String) request.getSession().getAttribute("isLogin");
if (isLogin != null && isLogin.equals("true")){
return true;
}
request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response);
return false;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
(4)
package com.pudica.task05.utils;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by gl1687 on 2017/10/8.
*/
public class SimpleInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
Log.loggerCreate(LogLevel.ERROR, "-------------------------preHandle----------------------");
//获取cookie中的值
String username = CookieUtils.getCookieValue(request, "username");
String loginTime = CookieUtils.getCookieValue(request, "loginTime");
String encry = CookieUtils.getCookieValue(request, "encry");
if (username != null && loginTime != null) {
if (encry.equals(MD5Encryption.EncoderByMd5("["+ username+"$"+"]" + loginTime)))
return true;
}
request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response);
return false;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
Log.loggerCreate(LogLevel.ERROR, "-------------------------postHandle----------------------");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
Log.loggerCreate(LogLevel.ERROR, "-------------------------afterCompletion----------------------");
}
}
(5)
package com.pudica.task05.utils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
/**
* Created by gl1687 on 2017/10/8.
*/
public class AutoAuthenticate {
public static void cookieAuthenticate(HttpServletResponse response, String username,
String loginTime) throws NoSuchAlgorithmException, UnsupportedEncodingException {
String encryCookieValue1 = MD5Encryption.EncoderByMd5(username);
String encryCookieValue2 = MD5Encryption.EncoderByMd5("" + loginTime);
String encryCookieValue3 = MD5Encryption.EncoderByMd5("[" + encryCookieValue1 + "$" + "]" + encryCookieValue2);
// 生成cookie
CookieUtils.addCookie(response, "username", encryCookieValue1, null);
CookieUtils.addCookie(response, "loginTime", encryCookieValue2, null);
CookieUtils.addCookie(response, "encry", encryCookieValue3, null);
}
public static void sessionAuthenticate(HttpServletRequest request){
HttpSession session = request.getSession();
session.setAttribute("isLogin", "true");
session.setMaxInactiveInterval(60);
}
}
2.在spring-config.xml中对拦截器进行配置
<!-- 拦截器相关配置 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/u/profession"/>
<bean class="com.pudica.task05.utils.SimpleInterceptor"/>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/u/test"/>
<bean class="com.pudica.task05.utils.SessionInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
二、明日计划
继续编写controller层和view组件,完成任务5。
三、遇到问题
在前段时间把任务涉及的基础知识梳理和学习了一遍,但是具体结合task4的代码进行应用时候,对于如何调用何种方法,以及如何在不同组件间进行协作不是很明白,所以借鉴了师兄的代码进行复现。虽然加快了任务进度,但是有些知识点并未弄懂为何要这样使用,因此还得仔细琢磨。
四、收获
以上。
禅道进度:http://task.ptteng.com/zentao/task-view-10377.html
任务5延期一天至10月9日完成。
评论