gpt4 book ai didi

java - 正确配置 Spring 的安全性 - Java

转载 作者:行者123 更新时间:2023-12-02 04:05:39 26 4
gpt4 key购买 nike

所以我是 Spring 的新手,并且在使用 Spring-Boot 开发 Web 应用程序时学习。目前我的页面由两个 html 页面组成:index.htmllogin.html。我也在使用 Spring-Security。

这是我当前的MvcConfig:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {

@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
registry.addViewController("/login").setViewName("login");
}

}

网站的设计方式是,用户访问 URL http://localhost:8080 ,然后他/她会看到初始页面,那里有一个 login 选项卡,他/她可以在其中登录,然后转到 dashboard View (我将添加该 View )之后)。但是,当我加载初始时,页面完全配置错误(未加载 css/js/images 资源)。当我转到 http://localhost:8080/login 后,执行登录,一切恢复正常。

因此,任何 http://localhost:8080 形式的 URL是允许的 (index.html),但其他任何操作都需要登录。这是我的 Spring-Security 配置:

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.regexMatchers("/", "/index").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
}

如何正确配置我的网页?

*** 注意: * 我目前没有任何 Controller 类。

最佳答案

我发现正则表达式匹配器的问题是从服务器加载的任何资源,您需要在映射中考虑。

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/login", "/admin").hasRole('ADMIN') // e.g. for pages that need to be authenticated
.anyRequest().permitAll() // all the others will be accessable by all
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
}

最简单的匹配方法是以下步骤:

  1. 通过重写 addResourceHandlers 声明您的资源文件
  2. 使用 antmatchers 来处理 URL 安全性(更简单、更容易),除非您有带有关键参数的极其动态的 URL

关于java - 正确配置 Spring 的安全性 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34303202/

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