cas4.0单点登录的配置

本文介绍了一种基于Java的CAS单点登录系统的配置方法,详细展示了如何通过Spring Boot配置各类CAS过滤器,包括用户认证、Ticket验证、单点登出等功能。
package com.rquest.riskmaster.config;


import org.jasig.cas.client.authentication.AuthenticationFilter;
import org.jasig.cas.client.session.SingleSignOutFilter;
import org.jasig.cas.client.session.SingleSignOutHttpSessionListener;
import org.jasig.cas.client.util.AssertionThreadLocalFilter;
import org.jasig.cas.client.util.HttpServletRequestWrapperFilter;
import org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.embedded.FilterRegistrationBean;
import org.springframework.boot.context.embedded.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class CasConfiguration {
private static final Logger logger = LoggerFactory.getLogger(CasConfiguration.class);


/**
     * CAS过滤器
     *
     * @return
     * @author SHANHY
     * @create  2016年1月17日
     */
@Value("${casServerLoginUrl}")    
private String casServerLoginUrl;
@Value("${clientServerName}")    
private String clientServerName;
@Value("${casServerUrlPrefix}")    
private String casServerUrlPrefix;

 private static boolean casEnabled = true; 
   
 
 /** 
  * 用于实现单点登出功能 
  */
 @Bean
 public ServletListenerRegistrationBean<SingleSignOutHttpSessionListener> singleSignOutHttpSessionListener() { 
   ServletListenerRegistrationBean<SingleSignOutHttpSessionListener> listener = new ServletListenerRegistrationBean<>(); 
   listener.setEnabled(casEnabled); 
   listener.setListener(new SingleSignOutHttpSessionListener()); 
   listener.setOrder(1); 
   return listener; 
 } 
 
 /** 
  * 该过滤器用于实现单点登出功能,单点退出配置,一定要放在其他filter之前 
  */
/*  @Bean
 public FilterRegistrationBean logOutFilter() { 
   FilterRegistrationBean filterRegistration = new FilterRegistrationBean(); 
   LogoutFilter logoutFilter = new LogoutFilter(casServerHostLoginUrl ,new SecurityContextLogoutHandler()); 
   filterRegistration.setFilter(logoutFilter); 
   filterRegistration.setEnabled(casEnabled); 
     filterRegistration.addUrlPatterns("/logout"); 
   filterRegistration.addInitParameter("casServerUrlPrefix", casServerUrlPrefix); 
   filterRegistration.addInitParameter("serverName", serverName); 
   filterRegistration.setOrder(2); 
   logger.info("logOutFilter===第二启动");
   return filterRegistration; 
 } */
 
 /** 
  * 该过滤器用于实现单点登出功能,单点退出配置,一定要放在其他filter之前 
  */
 @Bean
 public FilterRegistrationBean singleSignOutFilter() { 
   FilterRegistrationBean filterRegistration = new FilterRegistrationBean(); 
   filterRegistration.setFilter(new SingleSignOutFilter()); 
   filterRegistration.setEnabled(casEnabled); 
     filterRegistration.addUrlPatterns("/*"); 
     filterRegistration.addUrlPatterns("/logout");
   filterRegistration.setOrder(3); 
   return filterRegistration; 
 } 
 
 
 /** 
  * 该过滤器负责用户的认证工作 
  * cas.server.login.url=https://rquest.sso.cas:8443/cas/login
  * server.name=http://localhost:8080
  */
 @Bean
 public FilterRegistrationBean authenticationFilter() { 
   FilterRegistrationBean filterRegistration = new FilterRegistrationBean(); 
   filterRegistration.setFilter(new AuthenticationFilter()); 
   filterRegistration.setEnabled(casEnabled); 
     filterRegistration.addUrlPatterns("/*"); 
   //casServerLoginUrl:cas服务的登陆url 
   filterRegistration.addInitParameter("casServerLoginUrl", casServerLoginUrl); 
   //本项目登录ip+port 
   filterRegistration.addInitParameter("serverName",clientServerName); 
//    filterRegistration.addInitParameter("useSession", "true"); 
   filterRegistration.addInitParameter("redirectAfterValidation","true"); 
   filterRegistration.setOrder(4); 
   return filterRegistration; 
 } 
 
 /** 
  * 该过滤器负责对Ticket的校验工作 
  */
 @Bean
 public FilterRegistrationBean cas20ProxyReceivingTicketValidationFilter() { 
   FilterRegistrationBean filterRegistration = new FilterRegistrationBean(); 
   Cas20ProxyReceivingTicketValidationFilter cas20ProxyReceivingTicketValidationFilter = new Cas20ProxyReceivingTicketValidationFilter(); 
   //cas20ProxyReceivingTicketValidationFilter.setTicketValidator(cas20ServiceTicketValidator()); 
//    cas20ProxyReceivingTicketValidationFilter.setServerName(serverName); 
   filterRegistration.setFilter(cas20ProxyReceivingTicketValidationFilter); 
   filterRegistration.setEnabled(casEnabled); 
     filterRegistration.addUrlPatterns("/*"); 
   filterRegistration.addInitParameter("casServerUrlPrefix", casServerUrlPrefix); 
   filterRegistration.addInitParameter("serverName",clientServerName); 
   filterRegistration.setOrder(5); 
   return filterRegistration; 
 } 
 
 
 /** 
  * 该过滤器对HttpServletRequest请求包装, 可通过HttpServletRequest的getRemoteUser()方法获得登录用户的登录名 
  */
 @Bean
 public FilterRegistrationBean httpServletRequestWrapperFilter() { 
   FilterRegistrationBean filterRegistration = new FilterRegistrationBean(); 
   filterRegistration.setFilter(new HttpServletRequestWrapperFilter()); 
   filterRegistration.setEnabled(true); 
     filterRegistration.addUrlPatterns("/*"); 
   filterRegistration.setOrder(6); 
   return filterRegistration; 
 } 
 
 /** 
  * 该过滤器使得可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 
  比如AssertionHolder.getAssertion().getPrincipal().getName()。 
  这个类把Assertion信息放在ThreadLocal变量中,这样应用程序不在web层也能够获取到当前登录信息 
  */
 @Bean
 public FilterRegistrationBean assertionThreadLocalFilter() { 
   FilterRegistrationBean filterRegistration = new FilterRegistrationBean(); 
   filterRegistration.setFilter(new AssertionThreadLocalFilter()); 
   filterRegistration.setEnabled(true); 
     filterRegistration.addUrlPatterns("/*"); 
   filterRegistration.setOrder(7); 
   return filterRegistration; 
 } 


}
内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力分配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力分配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据和技术支持。; 适合人群:具备一定自动控制理论基础和Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在三维空间中的精确点对点运动控制;② 对比分析不同推力分配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力分配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值