在多应用系统中,登录一般是统一进行管理,在一个应用中登录了,在其他应用则不用登录,在任何一个应用进行退出,则当前用户已经在所有应用退出,即SSO单点登录。在大型网站新浪、淘宝,都实现了单点登录系统,避免了多个子系统都需要重复登录的现象。
成熟的Java 单点登录系统有jasig cas server,与shiro集成,可以在登录时,跳到cas服务器,cas服务器连接用户的用户名、密码表进行验证,如果验证通过,跳回验证前页面,并带上一个ticket参数,shiro通过这个ticket,进行登录。
< filter >
< filter-name > shiroFilter</ filter-name >
< filter-class > org.springframework.web.filter.DelegatingFilterProxy</ filter-class >
< init-param >
< param-name > targetFilterLifecycle</ param-name >
< param-value > true</ param-value >
</ init-param >
</ filter >
< filter-mapping >
< filter-name > shiroFilter</ filter-name >
< url-pattern > /*</ url-pattern >
</ filter-mapping >
然后就是shiro的spring bean配置,其实就是把之前的shiro.ini的东西配成spring的bean,shiro-config.xml文件如下:
< beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:aop = "http://www.springframework.org/schema/aop"
xmlns:tx = "http://www.springframework.org/schema/tx" xmlns:context = "http://www.springframework.org/schema/context"
xmlns:util = "http://www.springframework.org/schema/util"
xsi:schemaLocation ="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd"
default-lazy-init = "true" >