搜索墙首页  编程技术  java  asp  ajax  php  c/c#/c++  数据库  oracle  mysql  db2  操作系统  windows  linux  股吧
首页 > 编程 > java > Spring
 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>

-
 1         
您的发言将按有关规定都会存档,您须为所发表后果负责,请您遵纪守法并注意语言文明。
标题:Acegi如何实现基于数据库的多种方式登录?
热门关注
标题回复点击
商业J2EE中间件价值何在?74238
GoogleGuice-比Spring快100倍的IoC容器50215
Hibernate和Spring的决裂以及Spring和EJB3之争48205
关于pojo、dao、service的困惑49190
spring+Hibernate中异常如何处理19186
请教Spring的分布式事务管理44173
用spring的queryForList方法取结果集,字段中含有CLOB怎么办?0173
spring的事务不起作用?无法和当前sessin绑定?31166
请问这样的细粒度权限能否用acegi实现?47165
ThreadLocal与synchronized83148
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源