原创

CAS Server 4.0.0如何自定义Controller控制器

在实际开发过程中,CAS Server 4.0.0服务端提供了登录、认证等功能,但是我们希望加入更多的自定义功能,如自定义第三方登录服务等功能。


增加一个Controller类控制器以及修改部分配置来完成CAS Server 4.0.0自定义Controller扩展,废话就不多说了,开始具体实现方法。


首先打开CAS Server Web项目(cas-client-webapp),创建CasDemoController名称的类文件,将其放到cas-server-webapp/src/main/java/org/jasig/cas/controller目录下,CasDemoController.java具体代码如下:

package org.jasig.cas.controller;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import org.springframework.web.servlet.view.json.MappingJackson2JsonView;

public class CasDemoController extends AbstractController {

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		ModelAndView model = new ModelAndView();
		MappingJackson2JsonView jsonView = new MappingJackson2JsonView();
		Map<String, Object> attributes = new HashMap<String, Object>();
		attributes.put("name", "素文宅博客");
		attributes.put("site", "https://blog.yoodb.com/");
		jsonView.setAttributesMap(attributes);
		model.setView(jsonView);
		return model;
	}
}

分析:

CasDemoController类继承AbstractController类并重写了handleRequestInternal()方法,使用MappingJackson2JsonView类来构造jsonView对象值,返回json字符串。


修改cas-servlet.xml配置文件

cas-servlet.xml配置文件所在cas-server-webapp/src/main/webapp/WEB-INF目录。声明自定义bean,增加CasDemoController类文件配置信息,具体如下:

<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
  <bean id="oauth20WrapperController"
    class="org.jasig.cas.support.oauth.web.OAuth20WrapperController"
    p:loginUrl="${server.prefix}/login" p:servicesManager-ref="servicesManager"
    p:ticketRegistry-ref="ticketRegistry" p:timeout="7200" />
    
<!-- 新增Controller -->
    <bean id="casDemoController" class="org.jasig.cas.controller.CasDemoController"/>


与此同时需要增加这个bean的映射路径,具体配置如下:

<bean
      id="handlerMappingC"
      class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"
      p:alwaysUseFullPath="true">
    <property name="mappings">
      <util:properties>
      
      <prop key="/oauth2.0/*">oauth20WrapperController</prop>
      
      <prop key="/samlValidate">samlValidateController</prop>
      
        <prop key="/serviceValidate">serviceValidateController</prop>
        <prop key="/proxyValidate">proxyValidateController</prop>
        
        <prop key="/p3/serviceValidate">v3ServiceValidateController</prop>
        <prop key="/p3/proxyValidate">v3ProxyValidateController</prop>
        
        <prop key="/validate">legacyValidateController</prop>
        <prop key="/proxy">proxyController</prop>
        <prop key="/authorizationFailure.html">passThroughController</prop>
        <prop key="/status">healthCheckController</prop>
        <prop key="/statistics">statisticsController</prop>
        <prop key="/test">casDemoController</prop><!-- 映射方法(其实就是url跳转地址)-->
      </util:properties>
    </property>
</bean>


最后修改web.xml文件,该文件目录就没必要多说了,新增映射方法,具体配置如下:

<servlet-mapping>
<servlet-name>cas</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>


注意事项:

<url-pattern>/test</url-pattern>中“test”名称必须和上面<prop key="/test">casDemoController</prop>映射方法保持一致,<servlet-name>cas</servlet-name>中“cas”名称必须和web.xml配置文件中servlet名称保持一致。

关注下方微信公众号“Java精选”(w_z90110),回复关键字领取资料:如HadoopDubboCAS源码等等,免费领取资料视频和项目。 

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。

评论

  1. #1

    D虚伪 (2018/03/07 17:15:03)回复
    你好!我这个配置之后为啥还是 不能访问呢 从页面点击

    路人甲 (2018/03/14 11:44:25)回复
    你看一下是不是你自己的页面出现错误了,导致问题。

  2. #2

    艾琳 (2017/08/07 09:23:10)回复
    666 点赞走一波

  3. #3

    路人乙 (2017/08/03 11:12:10)回复
    可以可以,支持一下!

  4. #4

    嘟嘟 (2017/07/28 10:56:48)回复
    哈哈哈,同水,我是是一只小小鸟,淘气的嘟嘟!

  5. #5

    卐追求卓绝卍 (2017/07/28 10:40:27)回复
    我来膜拜大神的CAS

  6. #6

    渣渣 (2017/07/28 10:40:11)回复
    渣,写的不怎么样,感觉没有太多的深入内容。还是评论支持一下。

  7. #7

    小旭 (2017/07/28 10:38:05)回复
    666,水一波水一波水一波!!!

    路人甲 (2017/07/28 10:41:49)回复
    你这波666真是反应了你当下的感受阿!cas-SSO估计以后会有更多公司会考虑使用的,目前我们公司就在使用中呢。

分享:

支付宝

微信