เมื่อเร็ว ๆ นี้เมื่อเขียนโครงการกับ SpringMVC ฉันพบปัญหาซึ่งเป็นปัญหาการตรวจสอบความถูกต้องของวิธีการ ปัญหานี้ได้รับการแก้ไขเป็นเวลาหนึ่งวันและในที่สุดก็แก้ไขได้ มาดูวิธีแก้ปัญหาด้านล่าง
ข้อกำหนดของโครงการ: ในกรณีที่จำเป็นต้องมีการรับรองความถูกต้องฉันต้องติดป้ายกำกับเช่นการดำเนินการที่ผู้ใช้เข้าสู่ระบบเท่านั้น โดยทั่วไปเราจะตรวจสอบอินพุตตัวตนของผู้ใช้ก่อนที่จะดำเนินการวิธีการซึ่งจะเพิ่มปริมาณงานจำนวนมากและสร้างวงล้อขึ้นใหม่ ด้วยคำอธิบายประกอบ Java คุณจะต้องติดฉลากบนวิธีการที่ต้องใช้การตรวจสอบแล้ว:
สารละลาย:
1. ก่อนสร้างคลาสคำอธิบายประกอบ:
@documented@สืบทอด@target ({elementType.method, elementType.type})@retention (REVENTIONPICALY.RUNTIME) สาธารณะ @Interface Auth {Boolean Validate () ค่าเริ่มต้นจริง;}}2. สร้างตัวดักอื่น:
Public Class Authinterceptor ขยาย baseInterceptor {@Override บูลีนสาธารณะ prehandle (httpservletrequest Request, การตอบสนอง httpservletResponse, ตัวจัดการวัตถุ) โยนข้อยกเว้น {ถ้า (handler.getClass (). isAssignableFrom (handlermethod.class) Handler) .getMetHodannotation (Auth.class); // ไม่มีการประกาศอนุญาตหรือไม่มีการประกาศอนุญาตให้ไม่ได้รับการตรวจสอบหาก (AuthPassport == null) {return true;} else {// ใช้ตรรกะการตรวจสอบการอนุญาตของคุณเอง การตรวจสอบ "); return true;} else {// ถ้าการตรวจสอบล้มเหลว // กลับไปที่อินเตอร์เฟสเข้าสู่ระบบ // system.out.println (" การตรวจสอบสิทธิ์ถูกต้อง "); // response.sendrect (" บัญชี/ล็อกอิน "); return;3. กำหนดค่าตัวดัก: คุณต้องเพิ่มรหัสต่อไปนี้เป็น *-servlet.xml หากคุณปรับแต่งไฟล์การกำหนดค่าคุณสามารถใส่ลงในไฟล์กำหนดค่าที่คุณกำหนดโดยตรง
<MVC: interceptors> <bean/> </mvc: interceptors>
หมายเหตุ: คุณต้องเปลี่ยนค่าเริ่มต้นเป็น requestmappinghandlermapping และเพิ่มถั่วของ requestmappinghandleradapter
เพียงรีสตาร์ท Tomcat
การแจ้งเตือนที่อบอุ่น: หากคุณต้องการการตรวจสอบความถูกต้องสำหรับวิธีการคุณจะต้องพิมพ์ @auth บนวิธีนี้เท่านั้น หากคุณต้องการการรับรองความถูกต้องสำหรับทุกวิธีของคลาสคุณจะต้องพิมพ์ @auth ในชั้นเรียนเท่านั้น
ดังนั้นปัญหาคือวิธีการสกัดกั้นจะสกัดกั้นทรัพยากรคงที่เข้าด้วยกัน เราจำเป็นต้องสกัดกั้นไฟล์คงที่ใน Tomcat เช่น: โซลูชันของฉันคือการกำหนดค่าใน web.xml หากคุณมีวิธีการที่ดีคุณสามารถเพิ่มฉัน QQ 752432995 เพื่อพูดคุย
<servlet-mapping> <servlet-name> ค่าเริ่มต้น </servlet-name> <url-pattern>*. jpg </url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name> ค่าเริ่มต้น </servlet-name> <url-pattern>*
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับรหัสโซลูชันของ Interceptor คำอธิบายประกอบที่ใช้สำหรับ SpringMVC สำหรับการตรวจสอบวิธีการ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงเว็บไซต์นี้ต่อไปได้:
SpringMVC Interceptor ใช้การลงชื่อเข้าใช้ครั้งเดียว
คำอธิบายโดยละเอียดว่า SpringMVC Interceptor ใช้เซสชันการตรวจสอบจะหมดอายุหรือไม่
หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!