首页 > 其他分享 >CAS server如何自定义Controller控制器

CAS server如何自定义Controller控制器

时间:2024-08-28 15:04:48浏览次数:14  
标签:自定义 CAS server cas import CasDemoController servlet

CAS server如何自定义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>
 

注意事项:
/test中“test”名称必须和上面casDemoController映射方法保持一致,cas中“cas”名称必须和web.xml配置文件中servlet名称保持一致。

以上内容出自:点此加载原文

标签:自定义,CAS,server,cas,import,CasDemoController,servlet
From: https://www.cnblogs.com/telwanggs/p/18384710

相关文章

  • vxe-grid expandContent自定义展开的高度,以及展开的内容不要多于父vxe-grid会出现水平
    1、先上一张图,展示下效果:VxeTablev4.6默认是自适应高度的,也就是说我们只要指定展开的内容的最小高度就可以了。这样就可以保证展开的高度不会来回切换,并且我们可以限制容器里的内容的高度来实现。<stylelang="less"scoped>.sub-table{min-height:350px;......
  • 【Linux入门】shell基础篇——if、case、与for循环
    文章目录if的条件分支基本`if`语句包含`else`的`if`语句包含`elseif`(或`elif`)的`if`语句注意示例if的嵌套使用case`case`语句的基本语法:示例使用if语句结合casefor循环for循环的基本格式1.基于列表的`for`循环2.C语言风格的`for`循环注意其他循环基于文件的for循环......
  • linux中,解决使用sudo时,自定义path路径不生效的问题
    问题当我们在非root用户下,需要使用root权限的时候,通常在前面加sudo就可以了但是,今天遇到了一个小问题,就是我明明已经配置了go的bin目录在PATH变量中,还是配置在/etc/profile中,在root用户下,是可以执行go命令的按理说,用sudogo应该也是没问题的但是,我发现,当我......
  • sqlserver调优的相关查询
    SQLServer系统卡顿可能由多种原因引起,如硬件资源不足、查询性能问题、锁争用、并发连接过多等。以下是一些排查和优化步骤:1.检查硬件资源CPU使用率:检查SQLServer的CPU使用情况,特别是是否有单个查询占用了过多的CPU资源。使用TaskManager或PerformanceMonitor查......
  • CAS5和CAS6自定义异常提示消息
    CAS5和CAS6自定义异常提示消息使用cas登录时,如果登录错误页面应该提示一下错误消息,cas自带的有一些,不适用的话就需要自定义自己的异常消息提示了。自定义异常提示消息自定义异常消息类例如:验证码异常消息类importjavax.security.auth.login.AccountExpiredException;......
  • 【C#】【Winform】自定义控件、自定义事件
    https://blog.csdn.net/m0_62366581/article/details/139553373在开发桌面的过程中,有时候自带的控件样式或者功能上可能不一定能够满足我们的所有要求。这时候,我们需要自定义控件。创建类库项目把图标拖放到资源文件中添加用户控件设置样式尺寸修改代码视图其他项目中复用......
  • vue3 自定义hooks(组合式函数)
    什么是hooks自定义hooks是Vue3组合式函数的别称。在Vue应用的概念中,“组合式函数”(Composables)是一个利用Vue的组合式API来封装和复用有状态逻辑的函数。命名规范组合式函数约定用驼峰命名法命名,并以“use”作为开头。以便识别它们是可复用的逻辑单元。例如,u......
  • SQL server 特殊字符"\u0000"处理
    某天,接到用户反馈点击某个项目分组的时候页面报错,点击其他项目不报错。初步以为是下标数字特殊符号导致的。通过前台输出对应的数值后发现该字段末尾有个“\u0000”特殊字符(ASCII字符char(0))。通常是导入数据时的格式问题或是程序处理时将页面中的换行字符保存数据库导致的。......
  • Kettle: pentaho-server-ce-9.4 连接失败:ConnectionServiceImpl.ERROR_0009
    pentaho-server-ce-9.4 数据库连接MYSQL8.0.37 ,测试连接失败,提示:ConnectionServiceImpl.ERROR_0009-Connectiontodatabase[MYSQL8]failed. 在TOMCAT\LOGS\catalina.2024-08-27.log日志内容如下:  20:58:27,287ERROR[ConnectionServiceImpl]Errorend:21:0......
  • MySQL 2003 - Can’t connect to MySQL server on ' '(10060)
    2003-Can’tconnecttoMySQLserveron''(10060) 一般是以下几个原因造成的:1.网络不通畅2.mysql服务未启动3.防火墙未开放端口4##云服务器的安全组规则未设置  一般是以下几个原因造成的:1.网络不通畅:【mysql-u-p,看看能不能登陆】2.mysql服务未启动:......