SpringMvc使用拦截器实现登录认证

添加login拦截器

在lgon拦截器实现除了登录页面,其他页面都验证session是否有name属性,否则跳转到登录页面
spring-mvx.xml

<mvc:interceptors>
        <!-- 拦截器 -->
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.xwx.interceptor.LoginInterceptor"></bean>
        </mvc:interceptor>      
    </mvc:interceptors>

LoginInterceptor .java

package com.xwx.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class LoginInterceptor implements HandlerInterceptor {

    public static Logger log = Logger.getLogger(HandleInterceptor1.class.getName());

    /**
     * 在Handle执行前 执行
     * return true 继续执行 false不继续执行
     */
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
            log.debug("LoginInterceptor ...... preHandle");
            String currentUrl = request.getRequestURI();

            if(currentUrl.lastIndexOf("login") > 0){
                return true;
            }

            HttpSession session = request.getSession();
            if(session.getAttribute("name") == null){
                request.getRequestDispatcher("/login.jsp").forward(request, response);
            }

        return true;
    }

    /**
     * 在modelAndView 执行前  执行
     */
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
            log.debug("LoginInterceptor ...... postHandle");

    }

    /**
     * 在 Handle 执行后 执行
     */
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
            log.debug("LoginInterceptor ...... afterCompletion");
    }

}

登录退出实现

验证帐号密码,如果正确就添加到session。我这里只是简单实现了一个登录例子,只做参考,正式环境需要使用数据库验证等等。
LoginController.java

package com.xwx.controller;

import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/login")
public class LoginController {
    private static Logger log = Logger.getLogger(LoginController.class.getName());
    @RequestMapping("/login")
    public String login(HttpSession session, String name, String password){
        log.debug(name);
        log.debug(password);
        if(name.equals("admin")  && password.equals("123456")){
            session.setAttribute("name", name);
            log.debug("redirect:/user/index.do");
            return "redirect:/user/index.do";
        } else {
            return "redirect:/login.jsp";
        }
    }

    @RequestMapping("/logout")
    public String logout(HttpSession session){
        session.invalidate();
        return "redirect:/login.jsp";
    }
}

login.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>add</title>
</head>
<body>

    <form action="${pageContext.request.contextPath }/login/login.do" method="post">
        <p>
            <label>name: </label> <input type="text" name="name" value="${name }"  >
        </p>
        <p>
            <label>password: </label> <input type="password"   name="password" value="">
        </p>
        <p>
            <input type="submit" name="" value="提交">
        </p>
    </form>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值