jsfアプリケーションでスプリングセキュリティを実装しました。静的リソースが認証を必要とする場合を除き、すべてが正常に動作しています。これは私の設定ですSpringセキュリティでJSFリソースを公開するようにする
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests()
.antMatchers("/register", "/resources/**").permitAll()
.anyRequest().authenticated()
.and().formLogin().loginPage("/login").permitAll()
.usernameParameter("username").passwordParameter("password")
.and().exceptionHandling().accessDeniedPage("/Access_Denied");
}
ほとんどの解決策は、mvcリソースタグを追加することでした。
<mvc:resources mapping="/resources/**" location="/resources/"
cache-period="31556926"/>
私は、同様の注釈を発見し、認証を必要とするこの
@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
// equivalents for <mvc:resources/> tags
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/").setCachePeriod(31556926);
}
// equivalent for <mvc:default-servlet-handler/> tag
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
しかし、まだ静的なリソースのための構成クラスを追加しました。いくつかの助けがこの仕事をする方法についていいです。
注:私のリソースは/src/main/webapp/resources/{css|js|image}
に配置されています。そして、問題は、ユーザーがログインしていない場合、cssの効果です.jsはログインページに表示されません。ユーザーが一度ログインすると、ログイン後にログインページに来ると、CSS効果が表示されます。
私は "/javax.faces.resource/**"を追加しました。残念ながら、これによりサイト全体がログインしていないユーザーに許可されます。誰もがログインせずにすべてにアクセスできます。 –
はい!私は "/javax.faces.resource/**"を数回試しましたが、この.antMatchers( "/ **")を忘れました。毎回認証されました。 –