• CAS 单点登录系统配置


    我的博客:www.while0.com

    我的博客:www.shishangguan.net

    公司需要cas可以登录的时候选择登录方式是用户名登录还是注册号登录,但cas的jdbc登录验证虽然号称有三种配置方式,但他们后台只能获取到两个字段分别是用户名和密码,至于用户名对应的字段名是在xml里边ioc注入的,而我们需要用前台传过来的值作为username的字段名。
      参考资料:

    我的想法是照着jdbc验证模块的的SearchModeSearchDatabaseAuthenticationHandler开始,知道找到可以自己定义credentials类型的地方。
    我发现一共需要新建5个文件,修改两个xml配置文件。原始文件是以下文件不加蓝色字体部分。
    UsernamePasswordLogintypeCredentials                                                         在这个文件里边添加需要添加的login字段并且设置相应的set方法,修改hashcode方法和equals方法
    UsernamePasswordLogintypeCredentialsToPrincipalResolver           具体作用不明,照抄原来的改名字即可,deployerConfigContext.xml里边要用
    AbstractJdbcUsernamePasswordLogintypeAuthenticationHandler               修改方法的参数
    AbstractUsernamePasswordLogintypeAuthenticationHandler           修改某些方法的参数
    LogintypeSearchModeSearchDatabaseAuthenticationHandler           主验证类,全部引用和继承我们的新文件

    修改deployerConfigContext.xml和login-webflow.xml
    在login-webflow.xml中查找 <var name="credentials" class="这里修改为LogintypeSearchModeSearchDatabaseAuthenticationHandler的完整路径" />,超找<view-state id="viewLoginForm" view="casLoginView" model="credentials">在他下面的binder中添加<binding property="logintype" />
    修改deployerConfigContext.xml中

     1     <bean id="authenticationManager"
     2         class="org.jasig.cas.authentication.AuthenticationManagerImpl">
     3         <property name="credentialsToPrincipalResolvers">
     4             <list>
     5                     <!-- 此处修改为自定义CredentialsToPrincipalResolver实现 -->
     6                 <bean class="com.bettem.icbsnet.cas.web.authentication.UsernamePasswordLogintypeCredentialsToPrincipalResolver" >
     7                     <property name="attributeRepository" ref="attributeRepository" />
     8                 </bean>
     9                 <bean
    10                     class="org.jasig.cas.authentication.principal.HttpBasedServiceCredentialsToPrincipalResolver" ></bean>
    11             </list>
    12         </property>
    13                 <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
    14                     p:httpClient-ref="httpClient"/>
    15                 
    16                     <!-- 此处修改为自定义AuthenticationHandler,并取消fieldUser注入,因为fieldUser改为用后台表单提交过来的loginType数据了 -->
    17                 <bean id="SearchModeSearchDatabaseAuthenticationHandler"
    18                     class="com.bettem.icbsnet.cas.web.authentication.LogintypeSearchModeSearchDatabaseAuthenticationHandler">
    19                     <property name="tableUsers">
    20                         <value>user_user</value>
    21                     </property>
    22                     <property name="fieldPassword">
    23                         <value>userpwd</value>
    24                     </property>
    25                     <property name="dataSource" ref="dataSource" />
    26                     <property  name="passwordEncoder"  ref="pe"/>
    27                 </bean>
    28             </list>
    29         </property>
    30     </bean>
  • 相关阅读:
    flutter doctor出现问题 [!] Android toolchain
    CSS中的cursor属性
    致蝙蝠侠阿卡姆三部曲——最伟大的改编游戏
    ajax的使用:例题、ajax的数据处理
    用ajax对数据进行删除和查看
    ThinkPhp框架:验证码功能
    ThinkPhp框架:父类及表单验证
    ThinkPhp框架:分页查询和补充框架知识
    ThinkPhp框架对“数据库”的基本操作
    ThinkPHP框架知识的注意点
  • 原文地址:https://www.cnblogs.com/yamadie/p/2995668.html
Copyright © 2020-2023  润新知