我有一个web应用程序+一组使用Spring创建的rest API。它本质上是一些html页面向rest服务器发送ajax请求。结构看起来有点像这样:
我已经检查了rest API的Spring Security方案,并找到了一些关于静态内容安全的资源,但无法找到如何将其与上述内容结合在一起的方法。
我猜你想拥有两套资源。其中一个开放供公众访问,例如在/public
上下文中提供,另一个受保护,在/protected
中提供。
首先,您应该在Web配置
中创建一些资源处理程序
:
@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
// other stuffs
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/public/**").addResourceLocations("classpath:/public/");
registry.addResourceHandler("/protected/**").addResourceLocations("classpath:/resources/");
}
}
这样,/public
目录中的所有静态内容将在/public/**
endpoint提供服务,/protected/**
endpoint将为/resources
目录中的文件提供服务。
则应配置Spring Security性以保护/protected/**
endpoint:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// other stuffs
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/public/**").permitAll()
.antMatchers("/protected/**").authenticated()
.anyRequest().authenticated();
}
}
更新RESTendpoint,您可以使用相同的匹配器,也可以使用方法级别安全
进行更精细的粒度控制。为了启用方法级安全性,请将@EnableGlobalMethodSecurity(prePostEnabled=true)
添加到SecurityConfig
中。然后可以在hanlder方法上使用prepost
注释,如下所示:
@RestController
@RequestMapping("/greet")
public class GreetingService {
// it's a public rest endpoint
@PreAuthorize("permitAll()")
@RequestMapping("/public")
public void doGreetToPublicUsers() {...}
// it's a protected rest endpoint
@PreAuthorize("isAuthenticated()")
@RequestMapping("/protected")
public void doGreetToProtectedUsers() {...}
// it's a role protected rest endpoint
@PreAuthorize("hasRole('ROLE_ADMIN')")
@RequestMapping("/admin")
public void justForAdmin() {...}
}
在过去的几天里,我一直在和Spring保安公司战斗,所以我希望有人能在这里帮助我。 我正在使用Spring Boot 1.2.5 我使用的是Spring Actuator和Spring Remote Shell,它们已经从类路径中删除,认为它们可能会引起问题 我排除了SecurityAutoConfigsion,因为它可能会导致我的问题 这是我的主要课程 这是我的安全配置 我的问题/问题是 > C
我从这个来源构建了一个基本的spring身份验证服务:https://spring.io/guides/gs/securing-web/ 试图使用stackoverflow上几乎所有的解决方案来包含本地文件夹中的JS文件,但是我做不到。当html页面加载时,它显示:< br >“未捕获的引用错误:未定义我的函数” 这是我的home.html剧本: 这是我的js文件所在的位置,htmls被放置在模板
问题内容: 我想在Spring Boot项目中添加基于方法的安全性。 似乎我只需要添加和bean,用和注释方法。 但是加入豆子之后 我得到一个消息:“配置默认的servlet处理需要ServletContext”: 我在网上可以找到的所有内容都与jUnit测试有关。为什么会引发此异常?我想念什么?我是否必须添加一个ServletContext bean,如果需要,如何添加? 我的要求是Gradle
这个问题让我头疼。我有一个简单的controller类,它能够呈现一个简单的html页面以及Spring Boot初始化器类。 我已经将HTML页面放在src/main/resources目录下的静态文件夹中。但我无法获得html页面。相反,我得到了404个错误。 下面是我的项目的结构 simpleController.java: home.html: 运行Spring Boot时的控制台日志:
注意: 本教程假定你已经下载和安装了CodeIgniter开发环境。 首先,你需要创建一个可以处理静态内容请求的控制器类。控制器,是一个用来代理完成某项任务的PHP类,它充当基于MVC架构应用程序的“粘合剂”(译者注:控制器用来粘合/协调不同模型和视图。随着教程的深入,你会更深刻的理解这一点)。 举例来说,假设存在某个针对如下URL的请求: http://example.com/news/late