发表于: 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日完成。


返回列表 返回列表
评论

    分享到