首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web开发 >

CAS 配置多条SQL语句来返回登录成功后的数据有关问题

2013-11-23 
CAS 配置多条SQL语句来返回登录成功后的数据问题CAS 服务端在登录成功会返回客户端一些信息,以下配置是返

CAS 配置多条SQL语句来返回登录成功后的数据问题
CAS 服务端在登录成功会返回客户端一些信息,以下配置是返回信息的配置

[code=text]
<bean
class="org.jasig.services.persondir.support.jdbc.MultiRowJdbcPersonAttributeDao"
id="attributeRepository">
<constructor-arg index="0" ref="dataSource" />
<constructor-arg index="1"
value="SELECT 'att_usertype' AS att_usertype,0 AS usertype,'att_name' AS att_name,u.user_name,'att_dept' AS att_dept,u.dept_id,'att_msisdn' AS att_msisdn,u.user_msisdn,'att_email' AS att_email,u.user_email,'att_roleId' AS att_roleId,r.role_id,'att_sysCode' AS att_sysCode,r.sys_code FROM table1 a,table2 r WHERE r.user_id = u.user_id and {0}" />
<property name="queryAttributeMapping">
<map>
<!-- 这里的key需写username,value对应数据库用户名字段 -->
<entry key="username" value="u.user_id" />
</map>
</property>
<property name="nameValueColumnMappings">
<map>
<entry key="att_usertype" value="usertype" />
<entry key="att_name" value="user_name" />
<entry key="att_dept" value="dept_id" />
<entry key="att_msisdn" value="user_msisdn" />
<entry key="att_email" value="user_email" />
<entry key="att_roleId" value="role_id" />
<entry key="att_sysCode" value="sys_code" />
</map>
</property>

</bean>

<!-- Sample, in-memory data store for the ServiceRegistry. A real implementation 
would probably want to replace this with the JPA-backed ServiceRegistry DAO 
The name of this bean should remain "serviceRegistryDao". -->
<bean id="serviceRegistryDao" class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl">
<property name="registeredServices">
<list>

<bean class="org.jasig.cas.services.RegexRegisteredService">
<property name="id" value="0" />
<property name="name" value="HTTP and IMAP" />
<property name="description" value="Allows HTTP(S) and IMAP(S) protocols" />
<property name="serviceId" value="^(https?|imaps?)://.*" />
<property name="evaluationOrder" value="10000001" />
<property name="allowedAttributes">
<list>
<!-- <value>att_email</value> <value>att_name</value> <value>att_role</value> 
<value>att_sys</value> -->
<value>att_usertype</value>
<value>att_name</value>
<value>att_dept</value>
<value>att_msisdn</value>
<value>att_email</value>
<value>att_roleId</value>
<value>att_sysCode</value>
</list>
</property>
</bean>
<!-- Use the following definition instead of the above to further restrict 
access to services within your domain (including subdomains). Note that example.com 
must be replaced with the domain you wish to permit. -->

</list>
</property>
</bean>
[/code]现在我又这样的需求就是根据不同的类型返回不同的数据,查不同的表,也就是说上述配置中
<constructor-arg index="1"
value="SELECT 'att_usertype' AS att_usertype,0 AS usertype,'att_name' AS att_name,u.user_name,'att_dept' AS att_dept,u.dept_id,'att_msisdn' AS att_msisdn,u.user_msisdn,'att_email' AS att_email,u.user_email,'att_roleId' AS att_roleId,r.role_id,'att_sysCode' AS att_sysCode,r.sys_code FROM table1 a,table2 r WHERE r.user_id = u.user_id and {0}" />
不一定是这个sql语句可能还有一个备用的sql配置一下,然后根据需求来选择执行哪一个SQL语句,请问这个怎么修改cas的源码?或者是配置
谢谢!! cas配置返回值 cas?返回值 cas?配置
[解决办法]
这个的话,cas好像没有支持这种特殊需求,应该是不能通过配置实现。

你要使用不同的sql,相应的返回的属性就不一样,可以考虑增加一个类似attributeRepository的bean,注入到org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver,然后在AbstractPersonDirectoryCredentialsToPrincipalResolver根据不同条件使用不同的bean获取数据返回。

只是个想法,不知道行不行。

热点排行