我有/ my-app /登录网址,我想要这个网址的permitAll()。但是/ my-app / **模式下的这个页面只允许注册用户访问。
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/my-app/**").access("hasRole('USER')")
.and()
.httpBasic()
.authenticationEntryPoint(entryPoint());
}
怎么做?
答案 0 :(得分:0)
在.antMatchers("/my-app/login").permitAll()
之前添加.antMatchers("/my-app/**")...
。请求匹配器存储在列表中(按定义它们的顺序排序),Spring安全性将使用匹配当前请求的第一个规则。因此,最后列出最具体的第一条和通用规则。
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/my-app/login").permitAll()
.antMatchers("/my-app/**").access("hasRole('USER')")
.and()
.httpBasic()
.authenticationEntryPoint(entryPoint());
}
如果my-app
是您的应用程序的名称,因此应用程序服务器(Tomcat)将URL映射到应用程序的URL,那么您必须在{{{{}}中省略它1}}因为antMatcher
由应用程序相对网址“仅”配置:antMatcher
变为/my-app/login
而/login
变为/my-app/**
添加 /**
作为.anyRequest().permitAll()
的最后一个“匹配器”
authorizeRequests()
但说实话:你使用某种黑名单(允许除了一些黑名单之外的所有网址) - 这不是推荐的方式(从某些安全角度来看)。因为如果您忘记添加或拼错一个应该受到保护的URL,那么每个正文都可以访问它。更安全的方法是拒绝每个网址并仅允许一些(白名单)。
击>