- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在我基于版本 1.3.0.BUILD-SNAPSHOT 的 Spring Boot 应用程序中,我在 中有静态资源(图像、css、js)
文件夹。resources
下的 static
我看到了一些与安全配置相关的示例,如下所示:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(final WebSecurity web) throws Exception {
web.ignoring()
.antMatchers("/static/**");
}
}
这个例子正确吗?应该是什么效果?如何验证它是否有效(例如,向 localhost:8080/something
发出请求?我可以用 WebSecurity
做什么很酷的事情?
最佳答案
您的示例意味着 Spring (Web) Security 是 ignoring与您定义的表达式匹配的 URL 模式 ("/static/**")
.此 URL 被 Spring Security 跳过,因此不 protected 。
Allows adding RequestMatcher instances that should that Spring Security should ignore. Web Security provided by Spring Security (including the SecurityContext) will not be available on HttpServletRequest that match. Typically the requests that are registered should be that of only static resources. For requests that are dynamic, consider mapping the request to allow all users instead.
见 WebSecurity API 文档了解更多信息。
您可以根据需要设置任意数量的 protected 或不 protected URL 模式。
使用 Spring Security,您可以为应用程序的 Web 层提供身份验证和访问控制功能。您还可以限制具有指定角色的用户访问特定 URL 等。
阅读 Spring Security 引用以获得更多详细信息:
http://docs.spring.io/spring-security/site/docs/current/reference/html/
When matching the specified patterns against an incoming request, the matching is done in the order in which the elements are declared. So the most specific matches patterns should come first and the most general should come last.
There are multiple children to the http.authorizeRequests() method each matcher is considered in the order they were declared.
Patterns are always evaluated in the order they are defined. Thus it is important that more specific patterns are defined higher in the list than less specific patterns.
阅读这里了解更多详情:
http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#filter-security-interceptor
WebSecurity 的一般用途 ignoring()
方法省略了 Spring Security,Spring Security 的所有功能都将不可用。WebSecurity 基于 HttpSecurity
(在 XML 配置中,您可以这样写:<http pattern="/resources/**" security="none"/>
)。
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/resources/**")
.antMatchers("/publics/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/publics/**").hasRole("USER") // no effect
.anyRequest().authenticated();
}
上例中的 WebSecurity 让 Spring 忽略 /resources/**
和 /publics/**
.因此 .antMatchers("/publics/**").hasRole("USER")
在 HttpSecurity 中未考虑。
This will omit the request pattern from the security filter chain entirely. Note that anything matching this path will then have no authentication or authorization services applied and will be freely accessible.
模式总是按顺序评估。以下匹配无效,因为第一个匹配每个请求并且永远不会应用第二个匹配:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/**").hasRole("USER")
.antMatchers("/admin/**").hasRole("ADMIN"):
}
关于java - 在 WebSecurityConfigurerAdapter 中正确使用 WebSecurity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31995221/
我有这个问题使用 SpringBoot 和 SpringBoot-Security 实现自定义登录身份验证。我做了一个Bitbucket repository作为该线程的引用(在 CustomSecu
我已经实现了 UserDetailsService 来为我的 Spring Boot REST 服务返回带有 SimpleGrantedAuthority 的 UserDetails 实例。我有
我尝试将 Spring Security 添加到我的项目中,但没有成功。我仍然可以在没有任何登录的情况下访问我的网络应用程序。 主要配置 public class SpittrWebAppInitia
这是我的测试,我正在添加额外的 header 测试 after testing my filter @RunWith( SpringJUnit4ClassRunner.class ) @WebAppC
我们有一个看起来像这样的配置: @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter {
我正在尝试为我的应用程序配置多种身份验证类型,为每种类型的身份验证使用单独的 WebSecurityConfigurerAdapter。 总体思路是使用 WebSecurityConfigurerAd
我的 build.gradle 包含: compile('org.springframework.security:spring-security-web:4.1.3.RELEASE') “刷新所有
我目前正在使用 Spring Security 进行 Oauth2 实现,并且我发现了许多使用 ResourceServerConfigurerAdapter 的文档。随着WebSecurityCon
过去几天我一直在玩 Spring,事情变得很有趣。我现在正在与安全部门合作,但遇到了一些小问题。基本上,我希望通过 API 调用而不是表单进行身份验证。有没有一种巧妙的方法来做到这一点? 我已经像这样
我有 SPNEGO 的 spring 安全配置,它正在“破解”。它看起来如下: @Configuration @EnableWebSecurity public class SpnegoConfig
正如他们对我们的描述 here ,WebSecurityConfigurerAdapter 将在一段时间内弃用。 由于我想实现 JWT 模式,我尝试使用 SecurityFilterChain 重构
我正在构建一个需要处理两种类型身份验证的应用程序,所以我这样做了 @Autowired UserService userService; @Autowired public void configAu
我正在尝试在扩展 WebSecurityConfigurerAdapter 的类中使用 Spring 的 Security 的 Java 配置。我使用的是 3.2.0.RELEASE 版本。 在 Ht
我正在使用WebSecurityConfigurerAdapter,我想知道是否有办法配置WebSecurityConfigurerAdapter 中的错误处理程序就像以前在 web.xml 中一样我
我使用 SpringBoot 从事一个学校项目,并在添加了一些在互联网上看到的安全功能(WebSecurityConfigurerAdapter)后,我想知道是否有可能提取当前登录用户的用户名,因为我
In Spring security when I am using WebSecurityConfigurerAdapter, throws the following error. Anyone
构建 Spring 应用程序后,我遇到了这个问题: .../WebSecurityConfigurerAdapter.class] cannot be opened because it does
这些类之间有什么区别?我知道 WebSecurityConfigurerAdapter 用于自定义我们应用程序的“安全性”。 我做了什么: public class SecurityConfig ex
在我的 Spring Boot 应用程序中,我有以下两个类: @EnableWebSecurity public class AppSecurityConfig extends WebSecurity
我想为我网站上的某个“/interface”URL 启用 POST 请求。我已经通过 Class[] getRootConfigClasses() 成功加载了类(class), HttpSecurit
我是一名优秀的程序员,十分优秀!