zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    USASO Greedy Gift Givers
    Mat 类型用法
    OpenCV错误:Unhandled exception at 0x0133bc63 ....0xC0000005: Access violation reading location 0x00000004.
    C++ seekp 函数文件流跳转功能产生数据覆盖问题解决
    C++中文件名称必须是C风格的char*格式
    char*, char[] ,CString, string的转换
    Visual Stdio 2008 最大内存分配块大小问题: 使用new 分配连续723M内存 出错 std::bad_alloc at memory location 0x0013e0b8
    string类型转化为char*错误: error C2440: '=' : cannot convert from 'const char *' to 'char *'
    Mat 和 IplImage、CvMat格式的互相转换
    指针数组和数组指针
  • 原文地址:https://www.cnblogs.com/jokerq/p/8588294.html
Copyright © 2011-2022 走看看