博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cas5.3.2单点登录-自定义鉴权路径(十)
阅读量:3784 次
发布时间:2019-05-22

本文共 5074 字,大约阅读时间需要 16 分钟。

原文地址,转载请注明出处:      © 

客户端整合cas之后,无论我们访问什么地址,只要没有发现票据,都会跳转到cas服务端去进行登录。有时候我们有这样的需求,用户不登录也可以访问某些网页,这个时候就需要用到AuthenticationFilter的忽略地址功能。为了方便测试,我用一张图片来测试。

如果只是简单的忽略地址,那很简单只要使用AuthenticationFilter的ignorePattern参数,具体操作如下:

传统web项目配置方式

1.配置资源映射

我的图片放在WEB-INF/images下,默认是无法直接访问的,所以在spring-mvc.xml中配置资源映射

2.给web.xml中的AuthenticationFilter添加参数

CAS Filter
org.jasig.cas.client.authentication.AuthenticationFilter
casServerLoginUrl
https://server.cas.com:8443/cas/login
serverName
http://app1.cas.com:8081
ignorePattern
/js/*|/images/*|/view/*|/css/*

注意到上面的配置相对于之前,新增了ignorePattern 忽略的路径包含 /js 或者 /images 等,就这么简单就可以了.

springboot配置方式

1.首先配置资源映射

springboot项目,我的图片放在resource/static/images下,配置映射如下:

@Configurationpublic class SpringMVC implements WebMvcConfigurer {
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/images/**") .addResourceLocations("classpath:/static/images/"); }}

2.再配置授权过滤器如下:

/** * 授权过滤器 * @return */@Beanpublic FilterRegistrationBean filterAuthenticationRegistration() {    FilterRegistrationBean registration = new FilterRegistrationBean();    registration.setFilter(new AuthenticationFilter());    // 设定匹配的路径    registration.addUrlPatterns("/*");    Map
initParameters = new HashMap
(); initParameters.put("casServerLoginUrl", CAS_SERVER_LOGIN_URL); initParameters.put("serverName", SERVER_NAME); initParameters.put("ignorePattern", "/js/*|/images/*|/view/*|/css/*"); registration.setInitParameters(initParameters); // 设定加载的顺序 registration.setOrder(1); return registration;}

使用我之前自定义的starter

1.配置映射,代码参考上面springboot配置

2.在application.properties中添加如下配置就可以了。

#cas配置cas.server-url-prefix=https://server.cas.com:8443/cascas.server-login-url=https://server.cas.com:8443/cas/logincas.client-host-url=http://app2.cas.com:8082cas.ignore-pattern=/js/*|/images/*|/view/*|/css/*

上面那种方式是写死在配置文件里的,假如出现某种情况,前期是不需要登录就可以获取,后期可能改需求,需要登录之后才可以获取,这个时候不能 因为这个功能而且改需求吧,我们可以实现UrlPatternMatcherStrategy 接口来做,将内容存在数据库,请求过来时,可以查询数据库做判断。具体操作如下:

1.需要写一个类实现UrlPatternMatcherStrategy 接口

package com.wangsaichao.cas.config;import org.jasig.cas.client.authentication.UrlPatternMatcherStrategy;import java.util.regex.Pattern;/** * @author: wangsaichao * @date: 2018/8/7 * @description: 自定义鉴权路径 */public class SimpleUrlPatternMatcherStrategy implements UrlPatternMatcherStrategy {
private Pattern pattern; @Override public boolean matches(String url) { //在此可以做额外的扩展,比如判断是insert也放行 可以通过查询数据库来进行动态判断 if(url.contains("/insert")){ return true; } //默认是根据cas.ignore-pattern来判断是否否满足过滤 return this.pattern.matcher(url).find(); } /** * 这个pattern就是 在application.properties中配置的cas.ignore-pattern * @param pattern */ @Override public void setPattern(String pattern) { this.pattern = Pattern.compile(pattern); }}

在matches方法内,可以进行扩展,可以进行查库操作,等等。setPattern的方法参数就是我们前面配置的ignorePattern参数值。会自动传过来。下面针对不同项目给出不同配置方式。主要是配置ignoreUrlPatternType参数。

传统web项目配置方式

CAS Filter
org.jasig.cas.client.authentication.AuthenticationFilter
casServerLoginUrl
https://server.cas.com:8443/cas/login
serverName
http://app1.cas.com:8081
ignorePattern
/js/*|/images/*|/view/*|/css/*
ignoreUrlPatternType
com.wangsaichao.cas.config.SimpleUrlPatternMatcherStrategy

springboot配置方式

/** * 授权过滤器 * @return */@Beanpublic FilterRegistrationBean filterAuthenticationRegistration() {        FilterRegistrationBean registration = new FilterRegistrationBean();        registration.setFilter(new AuthenticationFilter());        // 设定匹配的路径        registration.addUrlPatterns("/*");        Map
initParameters = new HashMap
(); initParameters.put("casServerLoginUrl", CAS_SERVER_LOGIN_URL); initParameters.put("serverName", SERVER_NAME); initParameters.put("ignorePattern", "/js/*|/images/*|/view/*|/css/*"); initParameters.put("ignoreUrlPatternType", "com.wangsaichao.cas.config.SimpleUrlPatternMatcherStrategy"); registration.setInitParameters(initParameters); // 设定加载的顺序 registration.setOrder(1); return registration;}

使用我之前的自定义starter方式

在application.properties中添加以下内容

#cas配置cas.server-url-prefix=https://server.cas.com:8443/cascas.server-login-url=https://server.cas.com:8443/cas/logincas.client-host-url=http://app2.cas.com:8082cas.ignore-pattern=/js/*|/images/*|/view/*|/css/*cas.ignore-url-pattern-type=com.wangsaichao.cas.config.SimpleUrlPatternMatcherStrategy
你可能感兴趣的文章
python实现快速排序
查看>>
python实现归并排序
查看>>
ptqt5控件了解(三)
查看>>
自学C++(一)
查看>>
51单片机介绍(二)
查看>>
STM32F103 入门篇-5-初识STM32
查看>>
后台框架的frameset
查看>>
Spring Jdbc
查看>>
Spring 事务管理
查看>>
spring与mybatis的整合
查看>>
json数据交换和RESTful支持
查看>>
spring中的拦截器
查看>>
文件上传和下载
查看>>
Oracle指令,软件架构,
查看>>
oracle5:oracle的图形界面操作,分页查询,练习
查看>>
密码学基础之对称密码体制和公钥密码体制
查看>>
Spark Streaming进阶
查看>>
C++顺序表经典算法
查看>>
网络安全与管理知识点总结
查看>>
YARN的概述
查看>>