لا أقوم بدمج springmvc هنا ، لكنني أستخدم ملف تكوين INI مباشرة.
Shiro.ini
[main]# الكائنات وخصائصها محددة هنا ،# مثل SecurityManager ، العوالم وأي شيء آخر مطلوب لبناء securitymanagerauthc.loginurl = /login.jspauthc.successurl = /web/index.jsp#cache managerbuiltinceman = org.apache.shiro.cache.MemoryCrateCheManagerSecurityManager = org.apache.shiro.web.mgt.defaultwebsecuritymanagerCurityManager.cachemanager = $ buildincachemanagerSecurityManager.sessionManager = $ sessageManager عندما تفرض الخروج ، SessionManager = org.apache.shiro.web.session.mgt.defaultwebsessionAmer.SessionDao = $ sessiondaassessiondao = org.apache.shiro.session.mgt.eis.MemorysessionDao# org.apache.shiro.realm.ldap.jndildaprealm# .........# تكوين jdbc dataSourCedAtaSource = org.postgresql.ds.pgpoolingdataSource# ... org.apache.shiro.realm.jdbc.jdbcrealmjdbcrealm.userRolesQuery = ...... jdbcrealm.permissionsquery = ...... jdbcrealm.dataSource = $ dataSource# $ ldaprealm ، $ localauthorizingRealm
في LocalAuthorizingRealm ، قم بإزالة الجلسات الأخرى للمستخدم قبل تسجيل الدخول للمصادقة:
OverRideProtected antainticationInfo doggetAuthenticationInfo (antainticationtoken antainticationtoken) يلقي المصادقة atticationexception {string username = (string) antructionToken.getPrincipal () ؛ (defaultWebsessionManager) SecurityManager.getSessionManager () ؛ Collection <Session> Sessions = SessionManager.getSessionDao (). قبل (username.equals (string.valueof (session.getAttribute (defaultSubjectContext.principals_session_key)))))))))) بعد حذف الجلسة ، يجب أن يكون هناك تفاعل بين العميل والخادم قبل أن يتمكن Shiro من إصدار أحكام المصادقة. عند التفاعل مع الخادم ، تكون لقطة شاشة معلومات الموضوع كما يلي:
في هذا الوقت ، انتهت صلاحية مصادقة المستخدم المسجلة ويمكنها الاستجابة للعميل.
ما سبق هو ما يقدمه لك المحرر لتحقيق تسجيل واحد (لا يمكن للمستخدمين تسجيل الدخول إلا في مكان واحد في نفس الوقت). آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!