mvcMatchers
时间: 2023-08-22 08:14:35 浏览: 121
mvcMatchers是ExpressionUrlAuthorizationConfigurer类中的一个方法,用于配置匹配规则。该方法接受HttpMethod和String类型的参数,返回一个MvcMatchersAuthorizedUrl对象。在该方法内部,会调用createMvcMatchers方法将method和patterns封装在一个List<MvcRequestMatcher>中,并将其传递给MvcMatchersAuthorizedUrl对象进行封装和返回。\[1\]\[2\]
#### 引用[.reference_title]
- *1* *2* *3* [SpringSecurity生成权限流程源码分析](https://blog.csdn.net/HHoao/article/details/124555415)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
相关问题
54.对于配置 Spring Security 以拦截特定 URL,以下哪种策略是正确的? (选择一项) A.可以通过配置指定的 URL(使用 authorizeReguests0与 antMatchers 或 mvcMatcher 方法),最特别的配在先,最不特别的死配在B.可以通过配蛋指定的 URL(使用 authorizeRequests0和 antMatchers 或 mvcMatchers 方),最不特别的匹配在先,最特别的匹配在后C.URLs 必须在 web.xml 或你的 WebApplicationlnitializer 实现中被指定为 Servlet 映射的-部分(如果使用 Servlet 3)D.URL 是在一个特殊的属性文件中指定的,被 Spring Security 使用
答案是B.可以通过配置指定的 URL(使用 authorizeRequests 和 antMatchers 或 mvcMatchers 方法),最不特别的匹配在先,最特别的匹配在后。在Spring Security中,可以使用authorizeRequests()方法来配置拦截规则,然后使用antMatchers()或mvcMatchers()方法来指定要拦截的URL。这些URL匹配规则是按照声明的顺序进行匹配的,因此最不特别的匹配规则应该放在前面,最特别的匹配规则应该放在后面。这样可以确保更精确的匹配规则优先匹配,而较不特别的匹配规则仅在必要时才匹配。
@Slf4j @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { //配置认证管理器 @Bean//添加此注解是为了能够在Controller中自动装配 @Override protected AuthenticationManager authenticationManager() throws Exception { return super.authenticationManager(); } //配置密码的加密方式 @Bean public PasswordEncoder passwordEncoder(){ // 下面代码是获取了一个无加密的实例 return NoOpPasswordEncoder.getInstance(); } @Override protected void configure(HttpSecurity http) throws Exception { // super.configure(http); //配置自己的登陆页面, 当判断没有登录的时候 自动跳转到自己的登陆页面 http.formLogin().loginPage("/login.html"); //配置白名单(无需登录也能访问) String[] urls = {"/reg.html","/login.html","/reg","login"}; http.authorizeRequests() .mvcMatchers(urls)//匹配某些路径 .permitAll()//直接放行(不需要登录可以访问) .anyRequest()//其他请求 .authenticated();//需要登陆认证才能访问 // 关闭默认开启的跨域攻击防御 http.csrf().disable(); } }
这段代码是一个Spring Security的配置类,用于配置认证和授权规则。下面是对代码的一些解释:
1. `@Slf4j`:这是一个Lombok注解,用于自动生成日志对象。
2. `@Configuration`:这是一个Spring注解,表示这是一个配置类。
3. `SecurityConfig`:这个类继承了`WebSecurityConfigurerAdapter`类,用于自定义Spring Security的配置。
4. `authenticationManager()`方法:这个方法被`@Bean`注解标记,表示将返回的`AuthenticationManager`对象注册为一个Bean,以供其他组件自动装配使用。
5. `passwordEncoder()`方法:这个方法也被`@Bean`注解标记,表示将返回的`PasswordEncoder`对象注册为一个Bean,用于配置密码的加密方式。在这里使用的是`NoOpPasswordEncoder.getInstance()`,即不对密码进行加密处理。
6. `configure(HttpSecurity http)`方法:这个方法用于配置Spring Security的认证和授权规则。在这里,配置了自定义的登录页面、白名单和关闭跨域攻击防御。
需要注意的是,这段代码中的密码加密方式使用了一个不安全的实例`NoOpPasswordEncoder.getInstance()`,仅用于演示目的。在实际项目中,应该使用安全的密码加密算法来保护用户密码。
阅读全文