我有这个Spring配置和OAuth2:
public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {
private static final String RESOURCE_ID = "resource-server-rest-api";
private static final String SECURED_READ_SCOPE = "#oauth2.hasScope('read')";
private static final String SECURED_WRITE_SCOPE = "#oauth2.hasScope('write')";
private static final String SECURED_PATTERN = "/api/**";
private static final String PUBLIC_PATTERN = "/api/*/public/**";
@Override
public void configure(ResourceServerSecurityConfigurer resources) {
resources.resourceId(RESOURCE_ID);
}
@Override
public void configure(HttpSecurity http) throws Exception {
http
.cors()
.and()
.anonymous()
.and()
.requestMatchers()
.antMatchers(SECURED_PATTERN)
.and().authorizeRequests()
.antMatchers(PUBLIC_PATTERN).permitAll()
.antMatchers(HttpMethod.POST, SECURED_PATTERN).access(SECURED_WRITE_SCOPE)
.anyRequest().access(SECURED_READ_SCOPE);
}
}
现在我想将 Swagger 添加到我的项目中。我配置了一个 Swagger 控制器:
@Controller //note - this is a spring-boot controller, not @RestController
public class SwaggerController {
public static final String SWAGGER_URL = "/api/v1/public/swagger/docs";
public static final String SWAGGER_HTML = "/swagger-ui.html";
@RequestMapping(SWAGGER_URL)
public String home() {
return "redirect:" + SWAGGER_HTML;
}
}
问题是我无法使“/swagger-ui.html”路径不触发Spring登录。我试过这个(请注意,我为Swagger html添加了蚂蚁垫子):
@Override
public void configure(HttpSecurity http) throws Exception {
http
...
.and().authorizeRequests()
.antMatchers(PUBLIC_PATTERN).permitAll()
.antMatchers("/swagger-ui.htm").permitAll()// No authentication
…}
但它没有起作用。我需要如何配置HttpSecurity?
添加此覆盖:
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring()
.antMatchers(SWAGGER_URL)
.antMatchers(SWAGGER_HTML);
}
因此,swagger主页应该重定向到/swagger ui。html
?
如果是,您在配置< code>HttpSecurity时有一个错别字,您只键入了htm。所以改成:
.antMatchers("/swagger-ui.html").permitAll()
另一方面,如果swagger主页是/swagger-ui.htm
。然后您将控制器中的SWAGGER_HTML
更改为:
public static final String SWAGGER_HTML = "/swagger-ui.htm";
模式,是Rust另一个强大的特性。它可以被用在let和match表达式里面。相信大家应该还记得我们在复合类型中提到的关于在let表达式中解构元组的例子,实际上这就是一个模式。 let tup = (0u8, 1u8); let (x, y) = tup; 而且我们需要知道的是,如果一个模式中出现了和当前作用域中已存在的同名的绑定,那么它会覆盖掉外部的绑定。比如: let x = 1; let c
一、模式匹配 Scala 支持模式匹配机制,可以代替 swith 语句、执行类型检查、以及支持析构表达式等。 1.1 更好的swith Scala 不支持 swith,可以使用模式匹配 match...case 语法代替。但是 match 语句与 Java 中的 switch 有以下三点不同: Scala 中的 case 语句支持任何类型;而 Java 中 case 语句仅支持整型、枚举和字符串常
主机权限和 内容脚本匹配 是基于匹配模式定义的一组 URL。匹配模式本质上是一个以允许的 schema(http,https,file 或ftp 开头)的URL,并且可以包含 “*” 字符。特殊模式 < all_urls > 匹配以允许的 schema 开头的任何 URL。 每个模式包含 3 个部分: schema - 例如,http 或file 或 * 注意:对文件 URL 的访问不是自动的。用
MySQL提供了一个标准的SQL模式匹配,和基于扩展的正则表达式的模式匹配Unix工具(如vi,grep,sed)一样。 SQL模式匹配可以使用“_“来匹配任意单个字符,”%“可以用来匹配任意数量(包含0个字符)的字符。在MySQL中,SQL模式匹配的大小写默认是不敏感的,以下有一些例子,当你在使用SQL模式时,不要使用 = 或 <>,而是使用LIKE 或 NOT LIKE。 要找到以字符“b"开
除了我们常见的控制语句之外,Rust还提供了一个更加强大的关键字——match 。但是,需要指出的一点是,match只是匹配,要发挥其全部威力,还需要模式的配合。本章,我们就将的对Rust的模式匹配进行一番探索。 本章内容: match关键字 模式 pattern
模式匹配 内容脚本可以作用到模式匹配定义好的URL集合上. 你能对manifest文件的内容脚本段的部分进行一个或多个模式匹配操作. 这里描述模式匹配语法 — 当你指定内容脚本将影响哪些URL时你需要遵循的规则. 任意一个模式匹配本质上都是一个以认可的协议(例如:http, https, file, ftp 或者 chrome-extension)开头的URL,只是URL你可以包含"*"字符. 这