sách gpt4 ăn đã đi

Cách SpringMVC sử dụng chú thích để hoàn tất việc chặn đăng nhập

In lại Tác giả: qq735679552 Thời gian cập nhật: 29-09-2022 22:32:09 30 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết blog CFSDN này về cách SpringMVC sử dụng các chú thích để hoàn thành việc chặn đăng nhập đã được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này, hãy nhớ thích nó.

Để triển khai tính năng chặn đăng nhập của người dùng, bạn đã viết đoạn mã sau chưa?

1. Dựa trên Bộ lọc

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
nhập khẩu java.io.IOException;
 
nhập khẩu javax.servlet.Bộ lọc;
nhập khẩu javax.servlet.FilterChain;
nhập khẩu javax.servlet.FilterConfig;
nhập khẩu javax.servlet.ServletException;
nhập khẩu javax.servlet.ServletRequest;
nhập khẩu javax.servlet.ServletResponse;
nhập khẩu javax.servlet.http.HttpServletRequest;
nhập khẩu javax.servlet.http.HttpSession;
 
công cộng lớp học Bộ lọc xác thực thực hiện Lọc {
     riêng tư Cấu hình bộ lọc Cấu hình bộ lọc;
     riêng tư Chuỗi onErrorUrl;
 
     công cộng vô hiệu init(Cấu hình bộ lọcCấu hình bộ lọc) ném Ngoại lệ Servlet {
         // Lấy trang lỗi từ filterConfig
         cái này .filterConfig = cấu hình bộ lọc;
         cái này .onErrorUrl = filterConfig.getInitParameter( "onError" );
         nếu như ( cái này .onErrorUrl == vô giá trị || "" .bằng( cái này .onErrorUrl))
             cái này .onErrorUrl = "onError" ;
     }
    
     công cộng vô hiệu doFilter(yêu cầu ServletRequest, phản hồi ServletResponse,
             Chuỗi FilterChain) ném Ngoại lệ IO, Ngoại lệ Servlet {
        
         HttpServletRequest httpRequest = (HttpServletRequest)yêu cầu;
         phiên = httpRequest.getSession();
         nếu như ( vô giá trị == phiên.getAttribute( "_ĐĂNG NHẬP_NGƯỜI DÙNG_" ) && ! "/đăng nhập" . bằng(httpRequest.getServletPath())) {
             httpRequest.getRequestDispatcher( "/" + cái này .onErrorUrl).forward(yêu cầu, phản hồi);
         } khác {
             chain.doFilter(yêu cầu, phản hồi);
         }
     }
    
     công cộng vô hiệu hủy hoại() {
 
     }
 
}

2. Dựa trên Struts

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
nhập khẩu javax.servlet.http.HttpServletRequest;
nhập khẩu javax.servlet.http.HttpServletResponse;
nhập khẩu javax.servlet.http.HttpSession;
 
nhập khẩu org.apache.struts2.ServletActionContext;
 
nhập khẩu com.opensymphony.xwork2.ActionInvocation;
nhập khẩu com.opensymphony.xwork2.interceptor.AbstractInterceptor;
 
@SuppressCảnh báo ( "loạt bài" )
công cộng lớp học Đăng nhậpInterceptor mở rộng Tóm tắtInterceptor {
 
     @Ghi đè
     công cộng Chuỗi chặn (ActionInvocation gọi) ném Ngoại lệ {
         Chuỗi currentUser= "Người dùng hiện tại" ;
         Yêu cầu HttpServletRequest=ServletActionContext.getRequest();
         Phản hồi của HttpServletResponse=ServletActionContext.getResponse();
         Phiên HttpSession=request.getSession();                  
     nếu như (yêu cầu.getRequestURI().kết thúc bằng( "đăng nhập.hành động" )){
    trở lại invocation.invoke();
     } khác {
              nếu như (phiên.getAttribute(người dùng hiện tại)!= vô giá trị ){
                 trở lại invocation.invoke();
              } khác {
                  phản hồi.gửiChuyển hướng(yêu cầu.getContextPath()+ "/login.jsp" );
              }
   }
      trở lại vô giá trị ;
     }
}

3. Dựa trên SpringMVC

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
nhập khẩu javax.servlet.RequestDispatcher;
nhập khẩu javax.servlet.http.HttpServletRequest;
nhập khẩu javax.servlet.http.HttpServletResponse;
 
nhập khẩu org.springframework.web.servlet.HandlerInterceptor;
nhập khẩu org.springframework.web.servlet.ModelAndView;
 
nhập khẩu cn.edu.hdc.util.Hằng số;
 
/**
  * @ClassName: Đăng nhậpInterceptor
  * @Description: Trình chặn đăng nhập
  * @tác giả loweir hbloweir@163.com
  * @date Ngày 27 tháng 4 năm 2016 8:06:11 sáng
  */
công cộng lớp học Đăng nhậpInterceptor thực hiện HandlerInterceptor {
     /**
      * Được gọi trước phương thức đích, trả về true để tiếp tục
      */
     @Ghi đè
     công cộng Boolean preHandle(yêu cầu HttpServletRequest, phản hồi HttpServletResponse, đối tượng obj) ném Ngoại lệ {
         thử {
             Chuỗi url = request.getRequestURI();
             // Nếu đó không phải là thao tác đăng nhập, hãy xác định phiên
             nếu như (!url.kết thúc bằng( "đăng nhập" )) {
                 nếu như (yêu cầu.getSession().getAttribute(Hằng số.CURRENT_USER) == vô giá trị ) {
               phản hồi.gửiChuyển hướng(yêu cầu.getContextPath() + "/login.jsp" );
                     trở lại SAI ;
                 }  
             } }
             trở lại ĐÚNG VẬY ;
         } nắm lấy (Ngoại lệ e) {
             e.printStackTrace();
             trở lại SAI ;
         }
     }
 
     @Ghi đè
     công cộng vô hiệu afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Đối tượng arg2, Ngoại lệ arg3)
             ném Ngoại lệ {
     }
 
     @Ghi đè
     công cộng vô hiệu postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Đối tượng arg2, ModelAndView arg3)
             ném Ngoại lệ {
        
     }
}

Làm cách nào để sử dụng chú thích tùy chỉnh để hoàn thành việc chặn tùy chỉnh?

Chú thích đăng nhập

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
nhập khẩu java.lang.annotation.ElementType;
nhập khẩu java.lang.annotation.Giữ chân;
nhập khẩu java.lang.annotation.Chính sách giữ lại;
nhập khẩu java.lang.annotation.Mục tiêu;
 
/**
  * Được tạo bởi loweir vào ngày 14/5/2017 17:19
  *
  * Tác giả: Trương Vân Nam
  * email: hbloweir@163.com
  * Chịu trách nhiệm chặn đăng nhập
  */
@Giữ chân (Chính sách lưu giữ.RUNTIME)
@Mục tiêu ({Loại phần tử.TYPE,Loại phần tử.METHOD})
công cộng @giao diện WebLoginYêu cầu {
  Giá trị chuỗi() mặc định "" ; //Đường dẫn cần nhảy khi chưa đăng nhập
}

Cài đặt chặn chặn SpringMVC

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
nhập khẩu com.ainsoft.globalshopperp.component.constant.WebLogin;
nhập khẩu org.apache.commons.lang3.StringUtils;
nhập khẩu org.apache.commons.logging.Nhật ký;
nhập khẩu org.apache.commons.logging.LogFactory;
nhập khẩu org.springframework.web.method.Phương pháp xử lý;
nhập khẩu org.springframework.web.servlet.HandlerInterceptor;
nhập khẩu org.springframework.web.servlet.ModelAndView;
 
nhập khẩu javax.servlet.http.HttpServletRequest;
nhập khẩu javax.servlet.http.HttpServletResponse;
 
/**
  * Được tạo bởi loweir vào ngày 14/5/2017 17:14
  *
  * Tác giả: Trương Vân Nam
  * email: hbloweir@163.com
  */
công cộng lớp học Đăng nhậpInterceptor thực hiện HandlerInterceptor {
 
  riêng tư tĩnh Trình ghi nhật ký = LogFactory.getLog(LoginInterceptor. lớp học );
 
  công cộng Boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Trình xử lý đối tượng) ném Ngoại lệ {
 
   nếu như (logger.isDebugEnabled()) {
    logger.debug( "Đánh chặn đã bắt đầu" );
   }
   /*
   * Xác định xem đó có phải là HandlerMethod.class không
   * Nếu không có nghĩa là yêu cầu hiện tại không được SpringMVC quản lý,
   * Nếu bạn không tự mình trả lời doanh nghiệp, hãy trả lại true trực tiếp tại đây.
   */
   nếu như (Phương pháp xử lý. lớp học .isInstance(trình xử lý)) {
    HandlerMethod handlerMethod = (HandlerMethod) trình xử lý;
 
    // Xác định xem trình xử lý có chú thích WebLoginRequired hay không
    WebLoginRequired webLoginRequired = handlerMethod.getMethod().getDeclaredAnnotation(WebLoginRequired. lớp học );
 
             // Nếu trình xử lý không có chú thích WebLoginRequired, hãy xác định xem bộ điều khiển mà nó thuộc về có chứa chú thích hay không.
    nếu như ( vô giá trị == webLoginYêu cầu) {
     webLoginRequired = handlerMethod.getBeanType().getAnnotation(WebLoginRequired. lớp học );
    }
 
             // Nếu bắt buộc phải có WebLoginRequired, hãy xác định phiên
    nếu như ( vô giá trị != webLoginRequired) {
     nếu như (httpServletRequest.getSession().getAttribute(WebLogin.CURRENTUSER) == vô giá trị ) {
      Chuỗi executeURL = webLoginRequired.value();
      nếu như (StringUtils.isBlank(thực thiURL)) {
       executeURL = WebLogin.LOGIN;
      }
     
      httpServletResponse.sendRedirect(httpServletRequest.getContextPath() + executeURL);
      trở lại SAI ;
     }
    }
   }
   trở lại ĐÚNG VẬY ;
  }
 
  công cộng vô hiệu postHandle(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) ném Ngoại lệ {
   nếu như (logger.isDebugEnabled()) {
    logger.debug( "Người xử lý bài đăng" );
   }
  }
 
  công cộng vô hiệu afterCompletion(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse, Đối tượng o, Ngoại lệ e) ném Ngoại lệ {
   nếu như (logger.isDebugEnabled()) {
    logger.debug( "sau khi hoàn thành" );
   }
  }
}

Phương pháp viết bộ điều khiển cuối cùng

1. Không cần quyền đăng nhập

Cả lớp và phương thức đều không yêu cầu chú thích.

?
1
2
3
4
5
6
7
8
9
@Bộ điều khiển
@Yêu cầu lập bản đồ ( "xác thực" )
công cộng lớp học Bộ điều khiển xác thực {
 
  @Yêu cầu lập bản đồ ( "đăng nhập" )
  công cộng Chuỗi đăng nhập() {
   trở lại "đăng nhập" ;
  }
}

2. Cần có quyền đăng nhập trong toàn bộ bộ điều khiển

Chỉ cần thêm chú thích vào lớp.

?
1
2
3
4
5
6
7
8
9
10
@Bộ điều khiển
@WebLoginYêu cầu
@Yêu cầu lập bản đồ ( "đặt hàng" )
công cộng lớp học Bộ điều khiển đơn hàng {
 
  @Yêu cầu lập bản đồ ( "chỉ số" )
  công cộng Chỉ số chuỗi() {
   trở lại "chỉ số" ;
  }
}

3. Một phương thức nhất định trong bộ điều khiển yêu cầu quyền đăng nhập

Chỉ thêm chú thích vào các phương thức yêu cầu quyền đăng nhập Bạn có thể chỉ định liên kết cần được chuyển hướng trên chú thích. Nếu không được chỉ định, nó sẽ mặc định đăng nhập.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Bộ điều khiển
@Yêu cầu lập bản đồ ( "đặt hàng" )
công cộng lớp học Bộ điều khiển đơn hàng {
 
  @Yêu cầu lập bản đồ ( "chỉ số" )
  công cộng Chỉ số chuỗi() {
   trở lại "chỉ số" ;
  }
 
     // yêu cầu đăng nhập
     @WebLoginYêu cầu
     @Yêu cầu lập bản đồ ( "thêm vào" )
  công cộng Chỉ số chuỗi() {
   trở lại "chỉ số" ;
  }
    
     // Cần đăng nhập, nếu chưa đăng nhập sẽ nhảy tới lỗi
     @WebLoginYêu cầu ( "lỗi" )
     @Yêu cầu lập bản đồ ( "xóa bỏ" )
  công cộng Chỉ số chuỗi() {
   trở lại "chỉ số" ;
  }
}

Trên đây là chi tiết về cách SpringMVC sử dụng chú thích để hoàn tất việc chặn đăng nhập. Để biết thêm thông tin về SpringMVC sử dụng chú thích để hoàn thành việc chặn đăng nhập, vui lòng theo dõi các bài viết liên quan khác của tôi! .

Liên kết gốc: https://www.cnblogs.com/zyndev/p/7613006.html.

Cuối cùng, bài viết này về cách SpringMVC sử dụng chú thích để hoàn thành việc chặn đăng nhập kết thúc tại đây. Nếu bạn muốn biết thêm về cách SpringMVC sử dụng chú thích để hoàn thành việc chặn đăng nhập, vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan. tương lai blog của tôi! .

30 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress