允许 URL 中的语言参数(Spring 引导/安全)

Allow language parameter in URL (Spring Boot / Security)

亲爱的社区,您好,


关于我的目标的详细信息:


实际结果:


然后我添加了安全性:

http.authorizeRequests()

    // Restrict Endpoints
    .antMatchers("/login/**").hasAnyRole("admin", "member")

    // Allow Forms
    .antMatchers("/member/**").permitAll()

    // Allow Resources
    .antMatchers("/js/**").permitAll()
    .antMatchers("/css/**").permitAll()

    // Deny All
    .anyRequest().authenticated();
}

由于 .anyRequest().authenticated() 根路径上的请求如 /?lang=de 将触发身份验证。


我尝试了什么:

http.authorizeRequests()

    // Restrict Endpoints
    .antMatchers("/login/**").hasAnyRole("admin", "member")

    // Allow Forms
    .antMatchers("/member/**").permitAll()

    // Allow Resources
    .antMatchers("/js/**").permitAll()
    .antMatchers("/css/**").permitAll()

    // Trick to allow Internationalization
    .antMatchers("/*").permitAll()

    // Deny All
    .anyRequest().authenticated();
}

我添加了 .antMatchers("/*").permitAll() 这行得通,但它允许根路径上有很多资源。我的目标是仅允许 /?lang=de 无需身份验证。

有机会吗?


我研究过但不适应的资源:


亲切的问候
OtenMoten

嗯,终于成功了。

上面我说过我对提到的 Whosebug 链接不满意,但它仍然有效。

我添加了:

.regexMatchers("/.*lang=.*").permitAll()

http.authorizeRequests()

// Restrict Endpoints
.antMatchers("/login/**").hasAnyRole("admin", "member")

// Allow Forms
.antMatchers("/member/**").permitAll()

// Allow Resources
.antMatchers("/js/**").permitAll()
.antMatchers("/css/**").permitAll()

.regexMatchers("/.*lang=.*").permitAll()

// Deny All
.anyRequest().authenticated();

}