gpt4 book ai didi

java - 如何使用 Spring Security 修复对资源的访问?

转载 作者:行者123 更新时间:2023-11-30 05:21:26 30 4
gpt4 key购买 nike

我刚刚从网络上复制了带有 spring security 的登录/注册表单,但我遇到了很大的问题。我想让所有资源对所有人公开,因为 5 小时后我完全不知道这个 Spring 安全到底发生了什么。

好的,这是我的配置方法 1:

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
...
...
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
// URLs matching for access rights
.antMatchers("/").permitAll()
.antMatchers("/login").permitAll()
.antMatchers("/register").permitAll()
.antMatchers("/DBDesign").permitAll()
.antMatchers("/index").permitAll()
.antMatchers("/admin/**").hasAuthority("ADMIN")
.antMatchers("/user/**").hasAuthority("USER")
.anyRequest().authenticated()
.and()
// form login
.csrf().disable().formLogin()
.loginPage("/login")
.failureUrl("/login?error=true")
.successHandler(sucessHandler)
.usernameParameter("email")
.passwordParameter("password")
.and()
// logout
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/").and()
.exceptionHandling()
.accessDeniedPage("/access-denied");
}

配置方法2:

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

配置方法3:

@Configuration
public class WebMvcConfig implements WebMvcConfigurer{
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/webjars/**", "/static/**", "/templates/**")
.addResourceLocations("/webjars/", "classpath:/static/", "classpath:/templates/");
}
}

我 100% 确定其中一种方法负责管理登录前可用的目录和不可用的目录。伙计们,有人可以解释一下它到底是如何工作的吗?看这是我的临时文件结构:

enter image description here

绿色 --- 我有权访问

红色 --- 我没有访问权限

我可以复制并粘贴“绿色”文件的路径并查看里面的内容,但如果我尝试对红色文件执行相同的操作...错误 404。这怎么可能?只有那些 2x 没有权限。

最佳答案

资源处理程序/static/**指向classpath:/static/

因此安全过滤器应该忽略对 /sidebar/** 的请求,...

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

然后您可以在页面中使用类似的内容

<html lang="en">
<head>
....
<script src="/sidebar/js/main.js" ></script>
<script src="/diagramER/DBDesign.js" ></script>
<link rel="stylesheet" type="text/css" href="/sidebar/common/style.css">
</head>

关于java - 如何使用 Spring Security 修复对资源的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59526217/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com