ฉันไม่รวม SpringMVC ที่นี่ แต่ฉันใช้ไฟล์การกำหนดค่า INI โดยตรง
Shiro.ini
[หลัก]# วัตถุและคุณสมบัติของพวกเขาถูกกำหนดไว้ที่นี่# เช่น SecurityManager, อาณาจักรและสิ่งอื่น ๆ ที่จำเป็นในการสร้าง SecurityManagerauthc.loginurl = /login.jspauthc.successurl = /web/index.jsp#cache ManagerBuiltIncachemanager = org.apache.shiro.cache.memoryconstrainedCachemanagersecurityManager = org.apache.shiro.web.mgt.defaultwebsecurityManagersecurityManager.cachemanager = $ builtincachemanagersecurityManager.sessionManager = $ เซสชัน เมื่อคุณบังคับทางออก SessionManager = org.apache.shiro.web.session.mgt.defaultwebsessionManager.sessiondao = $ sessiondaossessiondao = org.apache.shiro.session.mgt.eis.memorysessiondao# org.apache.shiro.realm.ldap.jndildaprealm# .........# กำหนดค่า jdbc realm dataSourcedataSource = org.postgresql.ds.pgpoolingDataSource# .......# สร้าง jdbc realm.jdbcrealm org.apache.shiro.realm.jdbc.jdbcrealmjdbcrealm.userrolesquery = ...... jdbcrealm.permissionsQuery = ...... jdbcrealm.dataSource = $ dataSource#realmlocalauthorizeRyalM $ ldaprealm, $ localauthorizedRealm
ใน localauthorizedRealm ลบเซสชันอื่น ๆ ของผู้ใช้ก่อนที่จะเข้าสู่ระบบเพื่อตรวจสอบความถูกต้อง:
@OverrideProtected AuthenticationInfo DOGETAUTHENTICATIONINFO (AuthenticationToken AuthenticationToken) พ่น AuthenticationException {String username = (String) AuthenticationToken.getPrincipal (); (defaultWebsessionAger) SecurityManager.getSessionManager (); คอลเลกชัน <Session> เซสชัน = SessionManager.getSessionDao (). GetActiveSessions (); // รับรายการเซสชันผู้ใช้ในปัจจุบัน (เซสชัน: เซสชัน) ก่อนหน้า (ชื่อผู้ใช้ equals (string.valueof (session.getAttribute (defaultSubjectContext.principals_session_key)))))))))) {sessionManager.getSessionDao () ลบ (เซสชัน);}} สตริง pwd = null; หลังจากการลบเซสชันจะต้องมีการโต้ตอบระหว่างไคลเอนต์และเซิร์ฟเวอร์ก่อนที่ชิโรจะสามารถตัดสินการตรวจสอบความถูกต้องได้ เมื่อมีปฏิสัมพันธ์กับเซิร์ฟเวอร์ภาพหน้าจอข้อมูลเรื่องมีดังนี้:
ในเวลานี้การรับรองความถูกต้องของผู้ใช้ที่เข้าสู่ระบบหมดอายุและสามารถตอบสนองต่อไคลเอนต์ได้
ข้างต้นคือสิ่งที่ตัวแก้ไขแนะนำให้คุณตระหนักถึงการลงชื่อเข้าใช้ครั้งเดียว (ผู้ใช้รายหนึ่งสามารถเข้าสู่ระบบได้ในที่เดียวในเวลาเดียวกัน) ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!