【发布时间】:2019-01-14 13:25:14
【问题描述】:
下面是安全配置类:-
@EnableWebSecurity
public class SecurityManager extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
super.configure(auth);
}
@Bean
@Override
public UserDetailsService userDetailsService() {
UserDetails user=User.builder().username("user").password(passwordEncoder().encode("secret")).
roles("USER").build();
UserDetails userAdmin=User.builder().username("admin").password(passwordEncoder().encode("secret")).
roles("ADMIN").build();
return new InMemoryUserDetailsManager(user,userAdmin);
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/hello*").hasAnyRole("USER","ADMIN");
}
}
下面是我正在访问的控制器:
@RestController
public class DemoController {
@RequestMapping(value="/helloworld",method= RequestMethod.GET)
public String sampleGetter()
{
return "HelloWorld";
}
@RequestMapping(value="/helloinnerclass",method= RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
public InnerClass sampleInnerGetter()
{
return new InnerClass("Title","Value");
}
class InnerClass
{
String title;
String value;
public InnerClass(String title, String value) {
this.title = title;
this.value = value;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
}
通过 Postman 触发上述端点时,我收到 403 状态码。以下是错误截图:-
我没有在项目的属性文件中提到任何与安全性相关的内容,所以我确信基本的安全性没有通过属性文件处理。
【问题讨论】:
-
请不要在 Stackoverflow 上发布代码截图,只发布格式正确的错误消息本身。
标签: spring-boot authentication spring-security