应需求的变化,在登录cas的时候,默认根据用户名和密码进行验证,如果加上用户名,密码和一个系统标识进行验证呢?该如何做呢?
我们知道cas默认的登录界面中,输入的用户名和密码,再配置一下deployerConfigContext.xml 这个文件中的bean org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler 的这个标签,写上对应的sql,以及在<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">中配置数据库驱动,数据库名称,以及登陆密码等。
如果再加上一个其他的验证该怎么做呢?
1 根据xml中bean标签的提示,很容器找到这个类QueryDatabaseAuthenticationHandler.java类,首先先修改login-webflow.xml,修改代码如下所示:
<binder>
<binding property="username" />
<binding property="password" />
<binding property="systemId" />
</binder>
其中<bingding property="systemId" />与界面中传递过来的隐含域一致。
2 casLoginView.jsp中增加的js代码如下所示,从登陆地址的url传递参数。
<script language="javascript" type="text/javascript">
window.οnlοad=function()//用window的onload事件,窗体加载完毕的时候
{
//do something
var result = location.search.match(new RegExp("[\?\&]" + 'systemId'+ "=([^\&]+)","i"));
if(result == null || result.length < 1){
result ="";