在web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面,而重定向到登陆界面的功能。

项目是用springMVC+spring+hibernate实现 (和这个没有多大关系)

第一步

首先写一个登录权限过滤类--LoginFilter类实现Filter接口

 1 package com.agen.util;
 2 
 3 import java.io.IOException;
 4 
 5 import javax.servlet.Filter;
 6 import javax.servlet.FilterChain;
 7 import javax.servlet.FilterConfig;
 8 import javax.servlet.ServletException;
 9 import javax.servlet.ServletRequest;
10 import javax.servlet.ServletResponse;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13 import javax.servlet.http.HttpSession;
14 
15 import org.springframework.util.Assert;
16 import org.springframework.util.StringUtils;
17 
18 import com.agen.entity.User;
19 
20 /**
21  * 首先写一个登录权限过滤类--LoginFilter类实现Filter接口
22  * @author 申旭栋
23  *下面这三个方法是必须要实现的
24  */
25 public class LoginFilter implements Filter {
26 
27     @Override
28     public void init(FilterConfig filterConfig) throws ServletException {
29         // TODO Auto-generated method stub
30     }
31 
32     
33     @Override
34     public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
35         // 获得在下面代码中要用的request,response,session对象
36         HttpServletRequest servletRequest = (HttpServletRequest) request;
37         HttpServletResponse servletResponse = (HttpServletResponse) response;
38         HttpSession session = servletRequest.getSession();
39 
40         // 获得用户请求的URI
41         String path = servletRequest.getRequestURI();
42         
43         // 从session里取用户
44         User user = (User) session.getAttribute("user");
45 
46         // 登陆页面无需过滤
47         if("/biologyInfo/".equals(path) || "/biologyInfo/login/login1.htmls".equals(path)) {
48             chain.doFilter(servletRequest, servletResponse);
49             return;
50         }
51 
52         // 判断如果没有取到用户信息,说明这个请求是没有登录就在请求     就跳转到登陆页面 
53         if (user == null) {
54             // 跳转到登陆页面
55             servletResponse.sendRedirect("/biologyInfo/login/login1.htmls");
56         } else {
57             // 已经登陆,继续此次请求
58             chain.doFilter(request, response);
59         }
60 
61     }
62 
63     @Override
64     public void destroy() {
65         // TODO Auto-generated method stub
66     }
67 
68 }
View Code

相关文章:

  • 2021-08-12
  • 2022-12-23
  • 2021-08-30
  • 2021-12-08
  • 2022-12-23
  • 2021-12-05
  • 2022-12-23
  • 2022-02-23
猜你喜欢
  • 2021-12-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-01
相关资源
相似解决方案