• p2p登录拦截


    1.编写拦截标签

    package com.xmg.p2p.base.util;
    
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    /**
     * 用来标记登陆的标签(登录拦截)
     * @author Administrator
     *
     */
    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface RequireLogin {
        
    }

    2.在需要拦截的方法上写标签

    @RequireLogin

    3.专门用于登录检查的拦截器

    package com.xmg.p2p.base.util;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.method.HandlerMethod;
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
    /**
     * 专门用于登录检查的拦截器
     * @author Administrator
     *
     */
    public class LoginCheckInterceptor extends HandlerInterceptorAdapter {
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                throws Exception {
            //判断登录逻辑
            //1.
            if (handler instanceof HandlerMethod) {
                HandlerMethod hm = (HandlerMethod) handler;
                RequireLogin rl = hm.getMethodAnnotation(RequireLogin.class);
                if (rl!=null && UserContext.getCurrent()==null) {
                    response.sendRedirect("/login.html");
                    return false;
                }
            }
            return super.preHandle(request, response, handler);
        }
    }    

    4.在springMvc中配置拦截器

     <!--   配置拦截器 -->
        <mvc:interceptors>
            <mvc:interceptor>
                <mvc:mapping path="/*"/>
                <bean class="com.xmg.p2p.base.util.LoginCheckInterceptor" />
            </mvc:interceptor>
        </mvc:interceptors>
        

    (登录检查拦截器的用于存放当前用户的上下文UserContext

    package com.xmg.p2p.base.util;
    
    import javax.servlet.http.HttpSession;
    
    import org.springframework.web.context.request.RequestContextHolder;
    import org.springframework.web.context.request.ServletRequestAttributes;
    
    import com.xmg.p2p.base.domain.Logininfo;
    
    /**
     * 用于存放当前用户的上下文
     * @author Administrator
     *
     */
    public class UserContext {
        public static final String USER_IN_SESSION = "logininfo";
        
        /**
         * 方向获取request
         * @return
         */
        private static HttpSession getSesssion(){
            return ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getSession();
        }
        
        public static void putCurrent(Logininfo current){
            getSesssion().setAttribute(USER_IN_SESSION, current);;
        }
        public static Logininfo getCurrent(){
            
            return (Logininfo) getSesssion().getAttribute(USER_IN_SESSION);
        }
    }
  • 相关阅读:
    2.22
    LG P7077 函数调用
    2020/10/30 模拟赛 序列
    2020/10/27 模拟赛 数列
    2020/10/23 模拟赛 chip
    2020/10/23 模拟赛 escape
    2020/10/23 模拟赛 center
    LOJ#6581. 「ICPC World Finals 2019」断头路探测者
    LG P1587 [NOI2016]循环之美
    LG P4156 [WC2016]论战捆竹竿
  • 原文地址:https://www.cnblogs.com/jokerq/p/8588294.html
Copyright © 2020-2023  润新知