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 springmvc+shiro mã triển khai bộ lọc tùy chỉnh này đượ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ó.
Yêu cầu thực hiện:
1. Nếu người dùng chưa đăng nhập, anh ta sẽ chuyển đến trang đăng nhập. Sau khi đăng nhập hoàn tất, anh ta sẽ chuyển đến trang truy cập ban đầu.
2. Để xử lý do người dùng xác định (nếu cần kích hoạt), hãy chuyển đến trang kích hoạt. Sau khi kích hoạt hoàn tất, nó sẽ chuyển đến trang truy cập ban đầu.
Khung được sử dụng.
Thiết bị chặn cho springmvc.
bộ lọc tùy chỉnh shiro.
hoàn thành:
1. Viết một trình chặn để lưu địa chỉ trang của lần truy cập đầu tiên trong suốt phiên, để chuẩn bị quay lại trang sau.
?
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
|
nhập khẩu
org.slf4j.logger;
nhập khẩu
org.slf4j.loggerfactory;
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;
nhập khẩu
javax.servlet.http.httpsession;
/**
* Đối tượng chặn chặn nhảy trở lại trang trước sau khi người dùng đăng nhập: Tất cả các yêu cầu chuyển trang ngoại trừ đăng nhập và đăng ký vì người dùng có thể đăng nhập bất cứ lúc nào
*
* @phiên bản 1.0.0
* @ngày 2018-10-19
*/
công cộng
lớp học
tiếntrướcurlenteceptor
thực hiện
trình xử lý đánh chặn {
riêng tư
logger logger = loggerfactory.getlogger(
cái này
.getclass());
@ghi đè
công cộng
vô hiệu
sau khi hoàn thành (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ệ {
}
@ghi đè
công cộng
Boolean
prehandle(yêu cầu httpservletrequest, phản hồi httpservletresponse, đối tượng arg2)
ném
ngoại lệ {
nếu như
(yêu cầu.getheader(
"x-yêu cầu-với"
) !=
vô giá trị
&& yêu cầu.getheader(
"x-yêu cầu-với"
).dấu bằng hoặc chữ hoa(
"xmlhttprequest"
)) {
trở lại
ĐÚNG VẬY
;
}
httpsession phiên = yêu cầu.getsession(
ĐÚNG VẬY
);
chuỗi uri = request.getrequesturi();
chuỗi đường dẫn = uri.substring(request.getcontextpath().length());
chuỗi truy vấn = request.getquerystring();
nếu như
(truy vấn ==
vô giá trị
) {
truy vấn =
""
;
}
khác
{
truy vấn =
"?"
+ truy vấn;
}
chuỗi beforepath = đường dẫn + truy vấn;
phiên.setattribute(
"đường dẫn trước"
, trước đường dẫn);
phiên.setattribute(
"phương pháp"
, yêu cầu.getmethod());
logger.debug(
"beforepath :{}, phương thức:{}"
, beforepath, request.getmethod());
trở lại
ĐÚNG VẬY
;
}
}
|
2. Định cấu hình bộ chặn trong tệp cấu hình spring xml, chẳng hạn như application.xml.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
"/**"
/>
"/*.ajax"
/>
"/tài nguyên/**"
/>
"/kích hoạt"
/>
<đậu>đậu>
lớp học
=
"com.xxx.xxx.xxx.interceptor.forwardbeforeurlinteceptor"
/>
|
Lưu ý: Đây là giao diện cho phép bạn vào trực tiếp trang kích hoạt. Đây là giao diện loại trừ việc chặn trang kích hoạt để ngăn trang liên tục quay lại. trang của riêng bạn.
3. Bộ lọc tùy chỉnh.
?
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
|
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.httpservletresponse;
nhập khẩu
java.io.ioexception;
/**
* Trình chặn khóa học, tự động chuyển đến trang kích hoạt khi tư cách thành viên hết hạn hoặc không được kích hoạt
*
* @phiên bản 1.0.0
* @ngày 2018-10-19
*/
công cộng
lớp học
thành viên lọc
mở rộng
com.bwjf.framework.shiro.filter.userfilter {
@ghi đè
được bảo vệ
Boolean
isaccessallowed(yêu cầu servletrequest, phản hồi servletresponse, giá trị ánh xạ đối tượng) {
httpservletresponse httpservletresponse = (httpservletresponse) phản hồi;
httpservletrequest httpservletrequest = (httpservletrequest) yêu cầu;
nếu như
(httpservletrequest.getrequesturi().indexof(
"kích hoạt"
) >
0
) {
trở lại
ĐÚNG VẬY
;
}
myshirouser myshirouser = myuserutil.getcurrentshirouser();
nếu như
(!checkemptyutil.isempty(myshirouser) && checkemptyutil.isempty(myshirouser.getactivedate())) {
thử
{
httpservletresponse.sendredirect(httpservletrequest.getcontextpath() +
"/kích hoạt"
);
}
nắm lấy
(ioexception e) {
e.printstacktrace();
}
}
trở lại
ĐÚNG VẬY
;
}
}
|
4.shiro.xml định cấu hình các bộ lọc tùy chỉnh.

5. Chuyển đến trang đầu tiên sau khi xử lý kích hoạt bộ điều khiển.

Tóm tắt.
Trên đây là mã triển khai bộ lọc tùy chỉnh springmvc+shiro được trình soạn thảo giới thiệu. Tôi hy vọng nó sẽ hữu ích cho bạn. Nếu bạn có bất kỳ câu hỏi nào, vui lòng để lại tin nhắn cho tôi và trình soạn thảo sẽ trả lời bạn kịp thời. Tôi cũng xin cảm ơn mọi người đã ủng hộ trang web của tôi! .
Liên kết gốc: https://blog.csdn.net/hu582205/article/details/83501402.
Cuối cùng, bài viết này về mã triển khai của bộ lọc tùy chỉnh springmvc+shiro kết thúc tại đây. Nếu bạn muốn biết thêm về mã triển khai của bộ lọc tùy chỉnh springmvc+shiro, vui lòng tìm kiếm các bài viết về CFSDN hoặc tiếp tục duyệt các bài viết liên quan, tôi hy vọng bạn sẽ ủng hộ. blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!