1
1楼 Arden 2007-04-04 目前Acegi默认提供的是基于用户名、密码的登录,可是我的项目中需要实现如何几种方式登录: 1、用户名 /? 密码 2、手机号 /? 密码 3、ID号 /? 密码 这三种基于数据库的登录方式,不知道哪位对acegi比较熟,怎么扩展这样的实现方式,刚看了下acegi的源代码,里面看起来比较复杂,再加上现在时间紧,没太多时间去研究,不知哪位能否提点下! 2楼 moogle 2007-04-04
在acegi中你写三个认证管理器,分别对应三种就可以了。
然后在登录的时候会自动按你配置的顺序依次去检验, 3楼 moogle 2007-04-04
<!--
认证管理器。其本身并没有认证功能,而是委托Provider进行用户认证。 认证管理器会逐个调用认证提供类,直到认证成功。 (因此,认证提供类的顺序非常重要,常用的要放在最前面) Acegi当前提供了如下AuthenticationProvider的实现: DaoAuthenticationProvider 从数据库中读取用户信息验证身份 AnonymousAuthenticationProvider 匿名用户身份认证 RememberMeAuthenticationProvider 已存cookie中的用户信息身份认证 AuthByAdapterProvider 使用容器的适配器验证身份 CasAuthenticationProvider 根据Yale中心认证服务验证身份, 用于实现单点登陆 JaasAuthenticationProvider 从JASS登陆配置中获取用户信息验证身份 RemoteAuthenticationProvider 根据远程服务验证用户身份 RunAsImplAuthenticationProvider 对身份已被管理器替换的用户进行验证 X509AuthenticationProvider 从X509认证中获取用户信息验证身份 TestingAuthenticationProvider 单元测试时使用 --> <bean id="security.auth.manager" class="org.acegisecurity.providers.ProviderManager"> <property name="providers"> <list> <ref local="security.auth.provider.手机" /> <ref local="security.auth.provider.id登录" /> <ref local="security.auth.provider.用户名" /> </list> </property> <property name="sessionController"> <!-- 阻止用同一用户名多次登录 --> <bean id="concurrentSessionController" class="org.acegisecurity.concurrent.ConcurrentSessionControllerImpl"> <property name="maximumSessions" value="${security.maxConcurrentSession}" /> <property name="sessionRegistry" ref="security.filter.session.registry" /> <property name="exceptionIfMaximumExceeded" value="true" /> </bean> </property> </bean> 然后你自己和实现从数据库里校验用户名密码一样,写三个不同的auth Provide对应三种认证, 4楼 Arden 2007-04-04
好象这个东西还不好扩展,系统默认是以用户名来登录,如果要以其它字段来登录的话,好象要修改很多关联的类,不仅是实现ProviderManager就行了!
5楼 mazzystar 2007-04-11
<bean id="daoAuthenticationProvider"
class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"> <property name="userDetailsService" ref="jdbcDaoImpl" /> <property name="userCache" ref="userCache" /> </bean> <!--<bean id="daoAuthenticationProvider2" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"> <property name="userDetailsService" ref="jdbcDaoImpl2" /> <property name="userCache" ref="userCache" /> </bean> --><!-- 用户资料--> <bean id="jdbcDaoImpl" class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="usersByUsernameQuery"> <value> select loginid as username,passwd as password,status as enabled from users where loginid=? </value> </property> <property name="authoritiesByUsernameQuery"> <value> ......(略) </value> </property> </bean> <!--<bean id="jdbcDaoImpl2" class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="usersByUsernameQuery"> <value> select '6051','6051' from dual </value> </property> <property name="authoritiesByUsernameQuery"> <value> .......(略) </value> </property> </bean> -
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源
| |||||