欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

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

更新时间: 2014-01-05 00:49:08 责任编辑: Author_N1

 

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好像没有支持这种特殊需求,应该是不能通过配置实现。

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

只是个想法,不知道行不行。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 00:49:08
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/39/
本文WWW.DOC100.NET DOC100.NET版权所有。