SSM框架简单的未登录拦截,所有跳转链接都进行了拦截,就是直接跳页面不拦截

发布于 2022-09-05 20:09:05 字数 1458 浏览 7 评论 0

SSM框架简单的未登录拦截,

拦截器

 public boolean preHandle(HttpServletRequest request, HttpServletResponse response,  
            Object arg2) throws Exception {  
          
          //对请求路径进行判断
        String servletPath=request.getServletPath(); 
        boolean flag=false;   //用于存储判断登录的结果
        //判断请求是否需要拦截
        for(String s:IGNORE_URI){
            if(servletPath.contains(s)){
                flag=true;    //如果是不拦截的网站,flag为true,跳出循环,转向下个方法
                break;
            }
        }
        //拦截请求
        if(!flag){   //如果是非公开的页面↓
            AdminUser  admin=     (AdminUser)request.getSession().getAttribute("adminuser");
            if(admin==null){
                //System.out.println("AuthorizationInterceptor拦截请求");
                //request.setAttribute("message", "请先登录管理员后再访问网站");
                request.getRequestDispatcher("../login.jsp").forward(request, response);
            }else{
                //用户登陆过,验证通过,放行
                //System.out.println("AuthorizationInterceptor放行请求");
                flag=true;
            }
        }
        return flag;
    }  

配置

<mvc:interceptors>  
  <!-- 配置登陆拦截器 -->  
  <mvc:interceptor>  
      <mvc:mapping path="/**"/>  
      <bean class="com.zk.speak.filter.LoginHandlerIntercepter"></bean>  
  </mvc:interceptor>  
 </mvc:interceptors>

所有链接都进行了拦截,可就是直接输入页面不会拦截

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱本泡沫多脆弱 2022-09-12 20:09:05

/**

  • 登录拦截器

  • @author Administrator
    *

*/
public class LoginHandlerIntercepter implements HandlerInterceptor {


 //不拦截的页面
    private static final String[] IGNORE_URI={"user/myusers"};   //填写XX.do
    @Override  
    public void afterCompletion(HttpServletRequest request,  
            HttpServletResponse response, Object arg2, Exception arg3)  
            throws Exception {  
    }  
    @Override  
    public void postHandle(HttpServletRequest arg0, HttpServletResponse response,  
            Object arg2, ModelAndView arg3) throws Exception {  
          //  response.sendRedirect("/login.jsp");  
    }  
    @Override  
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,  
            Object arg2) throws Exception {  
      
        //对请求路径进行判断
        String servletPath=request.getServletPath(); 
        boolean flag=false;   //用于存储判断登录的结果
        //判断请求是否需要拦截
        for(String s:IGNORE_URI){
            if(servletPath.contains(s)){
                flag=true;    //如果是不拦截的网站,flag为true,跳出循环,转向下个方法
                break;
            }
        }
        //拦截请求
        if(!flag){   //如果是非公开的页面↓
            AdminUser  admin=     (AdminUser)request.getSession().getAttribute("adminuser");
            if(admin==null){
                //System.out.println("AuthorizationInterceptor拦截请求");
                //request.setAttribute("message", "请先登录管理员后再访问网站");
                request.getRequestDispatcher("src/main/webapp/login.jsp").forward(request, response);
            }else{
                //用户登陆过,验证通过,放行
                //System.out.println("AuthorizationInterceptor放行请求");
                flag=true;
            }
        }
        return flag;
    }  
怀里藏娇 2022-09-12 20:09:05

你要在拦截器配置里配置一下拦截失败跳转的页面

public class UserInterceptor implements HandlerInterceptor{  
  
    @Override  
    public void afterCompletion(HttpServletRequest request,  
            HttpServletResponse response, Object obj, Exception err)  
            throws Exception {  
    }  
  
    @Override  
    public void postHandle(HttpServletRequest request, HttpServletResponse response,  
            Object obj, ModelAndView mav) throws Exception {  
        response.sendRedirect("/login.jsp");  
    }  
  
    @Override  
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,  
            Object obj) throws Exception {  
        String str = (String) request.getSession().getAttribute("isLogin");  
        System.out.println("str=========>"+str);  
        if(str!=null){  
            return true;  
        }  
        return false;  
    }  
}  
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文