Saya tidak mengintegrasikan SpringMVC di sini, tetapi saya menggunakan file konfigurasi INI secara langsung.
Shiro.ini
[Utama]# Objek dan propertinya didefinisikan di sini,# seperti SecurityManager, Realms dan apa pun# Lain yang diperlukan untuk membangun SecurityManagerauthc.loginurl = /login.jspauthc.successurl = /web/index.jsp#cache ManagerBuiltIncacheMer = org.apache.shiro.cache.MemoryConstrainedCachemanagersecurityManager = org.apache.shiro.web.mgt.defaultWebSecurityManAgersecurityManager.cachemanager = $ builtIncAngeMersecurityManager.SessionManager = $ sessionManager#sesi Anda harus mengkonfigurasi. Saat Anda memaksa keluar, sessionManager = org.apache.shiro.web.Session.mgt.defaultwebsessionManager.Sessiondao = $ sessiondaossiondao = org.apache.shiro.Session.mgt.eis.memorySessiondao# create ldaprealm = memorySessiondao# create ldaprealm = memorySessiondao# org.apache.shiro.realm.ldap.jndildaprealm# .........# konfigurasikan jdbc realm dataSourcedataSource = org.postgresql.ds.pgpoolingDataSource# .......# buat jdbc realm.jdbcrealm.permissionsLookUpePenaDed = l, truejdcreal org.apache.shiro.realm.jdbc.jdbcrealmjdbcrealm.userrolesQuery = ...... jdbcrealm.permissionquery = ...... jdbcrealm.datasource = $ dataSource#realmlocalauthorizingRealM = com.redbudtek.shiroalmsalmsalmsalmsalmsalmsalMManMmanMmanMmManMmanMerMerAnbealMsEalMsEalMsEalMSalMsEalMSEALMREALM = COM.REDBUDTEK.SHOROLOLM.SHOROLOLM.SHOROURYM. $ ldaprealm, $ localauthorizingRealm
Di localAuthorizeRealm, hapus sesi pengguna lainnya sebelum masuk untuk otentikasi:
@OverridIprotected AuthenticationInfo doGetAuthenticationInfo (authenticationToken authenticationToken) melempar otenticationException {string username = (string) authenticationToken.getPrincipal (); // handle sessionDefaultManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManRManManRanManRanManRManManRManRanMer (Default) (DefaultWebSessionManager)securityManager.getSessionManager();Collection<Session> sessions = sessionManager.getSessionDAO().getActiveSessions();//Get the currently logged in user session list for(Session session:sessions){//Clear sessionif saved by the user when he logged in Sebelum (UserName.Equals (String.ValueOf (session.getAttribute (defaultSubjectContext.principals_session_key)))))))) {sessionManager.getSessionDao (). Delete (session);}} string pwd = null; return baru smelleaTicationIncication (sesi); Setelah sesi dihapus, harus ada interaksi antara klien dan server sebelum Shiro dapat membuat penilaian otentikasi. Saat berinteraksi dengan server, tangkapan layar informasi subjek adalah sebagai berikut:
Pada saat ini, otentikasi pengguna yang masuk telah kedaluwarsa dan dapat menanggapi klien.
Di atas adalah apa yang diperkenalkan oleh editor kepada Anda untuk mewujudkan tunggal masuk (satu pengguna hanya dapat masuk di satu tempat pada saat yang sama). Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!