有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring安全性没有做好它的工作

Atm我有一个问题,登录页面基本上什么都不做,因为如果你插入页面的url,你可以跳过登录

我在用这个

 @Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests().antMatchers("/").hasAnyRole("Administrator" , "Member")
            //.anyRequest().authenticated()
            .and()
            .formLogin().permitAll()
                .loginPage("/login").permitAll()
                .defaultSuccessUrl("/dashboard")
                .failureUrl("/login?error")
                .successHandler(authenticationSuccessHandler)
            .and()
            .logout()
                .logoutUrl("/logout")
                .logoutSuccessUrl("/login")
                .logoutSuccessHandler(logoutSuccessHandler)
            .and()
            .csrf().disable();
}

注意//.anyRequest().authenticated()被注释了。这一行似乎是为了保护我的网站不被通过URL访问,它正在重定向到登录页面

但是如果我有它,我在我的页面上看不到css,我就会

Refused to apply style from 'http://localhost:8080/login' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

我如何保护我的网站,使其不知道URL,但也能在登录页面中看到CSS


共 (2) 个答案

  1. # 1 楼答案

    取消请求。认证 然后你必须授权访问你的静态资源

    antMatcher("/css/**").permitAll()
    

    对javascript和其他静态资源也要这样做

    完整配置:

       http.authorizeRequests().antMatchers("/").hasAnyRole("Administrator" , "Member")
        .anyRequest().authenticated()
        .and()
        .authorizeRequests()
            .antMatchers("/css/**").permitAll()
        .and()
        .formLogin().permitAll()
            .loginPage("/login").permitAll()
            .defaultSuccessUrl("/dashboard")
            .failureUrl("/login?error")
            .successHandler(authenticationSuccessHandler)
        .and()
        .logout()
            .logoutUrl("/logout")
            .logoutSuccessUrl("/login")
            .logoutSuccessHandler(logoutSuccessHandler)
        .and()
        .csrf().disable();
    
  2. # 2 楼答案

    我通常会覆盖另一个配置来配置对资源的访问,与您描述的配置不同:

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/resources/**");
    }
    

    对我来说似乎更有条理。您可以将其添加到Spring配置类中,并通过css更改“资源”。我通常会打开“资源”并将我的css放在里面(在一个子目录中),因为它适用于各种资源,比如图像、css等等