我有我的spring boot应用程序,我正在尝试添加Spring Security性,但当我通过postman发出请求时,我不断收到一个403 Forbbiden,联机时我发现我应该在我的配置中添加:“.csrf().disable()”,但它不起作用(如果我在permitAll()中放置路径为:“person/**”的方法,则所有操作都有效)
这是我的代码:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document("User")
public class User {
@Id
private String id;
private String name;
private String password;
private String email;
private Set<UserRole> roles;
}
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private final UserDetailsService userDetailsService;
private final BCryptPasswordEncoder encoder;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(encoder);}
@Override
protected void configure(HttpSecurity http) throws Exception {
log.info("HttpSecurity: {}",http);
http.authorizeRequests()
.antMatchers( "/user/saveUser").permitAll()
.antMatchers("/person/**").hasAnyRole()
.and().csrf().disable().cors().disable();}
}
public class UserService implements UserDetailsService{
private final UserRepository userRepo;
private final BCryptPasswordEncoder passwordEncoder;
@Override
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
log.info("mail request: {}",email);
Optional<User> opt = userRepo.findUserByEmail(email);
log.info("Find user: {}", opt);
org.springframework.security.core.userdetails.User springUser=null;
if(opt.isEmpty()) {
throw new UsernameNotFoundException("User with email: " +email +" not found");
}else {
User user =opt.get();
Set<UserRole> roles = user.getRoles();
Set<GrantedAuthority> grantedAuthorities = new HashSet<>();
for(UserRole role:roles) {
grantedAuthorities.add(new SimpleGrantedAuthority(role.name()));
}
springUser = new org.springframework.security.core.userdetails.User(
email,
user.getPassword(),
grantedAuthorities );
}
return springUser;
}
我的用户控制器:
@RestController
@RequestMapping("user")
public class UserController {
private final UserService userService;
@PostMapping("/saveUser")
public ResponseEntity<String> saveUser(@RequestBody User user) {
log.info("Registering User: {}", user);
userService.saveUser(user);
return ResponseEntity.ok("registered User");
}
}
My person controller:(我获取403的方法)@RestController
@RequestMapping(“person”)公共类PersonController{@Autowired PersonService PersonService;@GetMapping(“/getAll”)公共响应属性
这是我第一次使用Spring Security性,我遵循了一个在线教程,但我真的不明白为什么每次我把我的请求放在安全性中,它仍然得到403禁止
我认为您可能需要将配置和EnableWebSecurity注释添加到您的SecurityConfig类中,因为没有它们,spring security无法看到您的安全配置。
见参考文件:https://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/config/annotation/web/configuration/EnableWebSecurity.html
请注意,自5.7.0-M2以来,Web安全配置适配器(WebSecurity ConfigureAdapter)就被弃用了,因此如果您使用更高版本的spring security,您可以考虑创建一个类型为安全过滤链(SecurityFilterChain)的bean来配置应用程序中的安全性。
我在Spring实现了WebSocket。一切正常,但最近我决定实施SpringSecurity。 我的MessageBroker看起来像: 我的JS客户看起来像这样: Spring Security配置: 通过我的JS客户端订阅后,我收到: 所以我决定在安全配置中添加此代码: 但在那之后我收到这种错误: 我不知道如何定义这样的bean,所以我创建了以下类: 但在编译期间,我收到这种错误: 我真的
我正在尝试使用Spring security保护我的网站,但我一直收到
我想暂时禁用整个应用程序的Spring Security性,但我总是被403禁止 删除控制器中的@PreAuthorize注释不会给出任何结果。未使用此注释标记的endpoint也会丢弃我 403 禁止 我不需要基本身份验证 我不需要身份验证 我的Spring Security配置:(/,/api/**,/**,**不工作,我总是得到403禁止) 我的一个控制者:
我无法理解从phonegap发送ajax请求时,如果没有使用tomcat处理请求,则返回403错误。如果使用码头嵌入工作冷却。 我的控制器 如何在tomcat中完整记录请求,或者如何从spring修复它。在简单的rest中,客户机工作很酷。 获取返回 主机10.0.0.42:8080连接保持活动接受/x请求-使用com。柠檬酸。planReview用户代理Mozilla/5.0(Linux;U;A
我的第一个Spring开机项目。我确实成功地将其配置为检查身份验证;如果用户/密码错误,则不会调用该方法(状态401 unauthorized),如果正确,则会成功。 现在我已经添加了JSR250的授权,我只得到403访问被拒绝。 WS: 调用时,我会在控制台上看到: EN LDAP LdapUserDetailsImpl[Dn=cn=ivr\u apl\u user,ou=ivr,ou=Apli
我总是得到http状态403。我有以下安全配置: 我无法发布到/api/users/login 2019-10-15 12:25:49.567[0;39m[32mdebug[0;39m[35m7423[0;39m[2m---[0;39m[2m[nio-8080-exec-1][0;39m[36mo.s.web.servlet.dispatcherservlet[0;39m:[2m:[0;39m“e