สกัดกั้นหน้า JSP และตรวจสอบว่าพวกเขาเข้าสู่ระบบหรือไม่
เมื่อเร็ว ๆ นี้ฉันใช้ Struts2 เพื่อทำโครงการและจำเป็นต้องสกัดกั้น JSP เพื่อตรวจสอบว่ามีการบันทึกไว้หรือไม่ แต่ห่วงโซ่ตัวกรองของ Struts2 สามารถกรองการกระทำเท่านั้น หลังจากนั้นฉันพบว่าใน web.xml ตัวกรองของคลาสการใช้งาน javax.servlet.filter สามารถเพิ่มได้โดยตรงไปยังตัวกรอง JSP โปรดดูรหัส
คลาสการใช้งานตัวกรอง
<span style = "ตัวอักษรขนาด: 18px;"> แพ็คเกจ com.common; นำเข้า java.io.ioException; นำเข้า Javax.servlet.filter; นำเข้า Javax.servlet.filterchain; นำเข้า Javax.servlet.filterConfig; นำเข้า javax.servlet.servletexception; นำเข้า Javax.servlet.ServletRequest; นำเข้า Javax.servlet.ServletResponse; นำเข้า Javax.servlet.http.httpservlet; นำเข้า Javax.servlet.httpservlet; นำเข้า Javax.servlet.httpservlet; นำเข้า Javax.servlet javax.servlet.http.httpservletrequest; นำเข้า Javax.servlet.http.httpservletResponse; Public Class LoginFilter ขยาย HTTPSERVLET ใช้ตัวกรอง {ส่วนตัวคงที่สุดท้าย Long SerialVersionUID = 1L; @Override โมฆะสาธารณะ Dofilter (คำขอ ServletRequest, การตอบสนอง servletResponse, ห่วงโซ่ FilterChain) พ่น IOException, servletexception {httpservletrequest req = (httpservletrequest) คำขอ; httpservletResponse res = (httpservletResponse) การตอบสนอง; String Path = req.getContextPath (); string indexpath = req.getScheme ()+": //"+req.getServername ()+":"+req.getServerport ()+path+"/pages/login.jsp"; if (req.getRequesturi (). endswith ("login.jsp")) {chain.dofilter (คำขอ, การตอบกลับ); กลับ; } Object logginuser = req.getSession (). getAttribute ("<strong> <span style =" สี:#ff0000; "> loginsession </span> </strong>"); if (logginuser == null) {res.sendredirect (indexpath); กลับ; } chain.dofilter (คำขอ, การตอบกลับ); } @Override โมฆะสาธารณะ init (filterConfig arg0) พ่น servletexception {// วิธีการที่สร้างอัตโนมัติ stub}}} </span> วิธีการเข้าสู่ระบบ:
<span style = "ตัวอักษรขนาด: 18px;"> การเข้าสู่ระบบสตริงสาธารณะ () {เข้าสู่ระบบเข้าสู่ระบบ = ใหม่เข้าสู่ระบบ (); //.....Check ข้อมูลการเข้าสู่ระบบ ActionContext CTX = ActionContext.getContext (); แผนที่ <สตริงวัตถุ> เซสชัน = ctx.getSession (); session.put ("<strong> <span style =" สี:#ff0000; "> loginsession </span> </strong>", เข้าสู่ระบบ); กลับ "ความสำเร็จ"; } </span> การกำหนดค่า web.xml
<silter> <filter-name> setlog </filter-name> <filter-class> com.common.loginfilter </filter-class> </filter> <filter-mapping> <url-pattern>/pages/content/*</url-pattern> <url-pattern>/หน้า/ผลิตภัณฑ์/*</url-pattern> <url-pattern>/pages/vodtask/*</url-pattern>
โปรดทราบว่าหากมีการใช้เฟรมบนหน้าเว็บอาจทำให้เซสชันหมดเวลาและออกจากระบบเข้าสู่หน้าเข้าสู่ระบบ ในเวลานี้หน้าเข้าสู่ระบบจะปรากฏขึ้นในหน้าย่อยของเฟรม วิธีแก้ปัญหา: เพิ่มรหัสต่อไปนี้ลงในหน้าเข้าสู่ระบบ
<span style = "font-size: 18px;"> <script language = "javascript"> if (top! = window) top.location.href = window.location.href; </script> </span>
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!