道歉,如果我的问题看起来像新手会问的话。我是Spring世界的新手。我正在使用Spring Security对用户进行身份验证。身份验证工作正常,但在身份验证成功后,我希望Spring调用Controller方法。“
@RequestMapping(value = "/login", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public JwtAuthenticationResponse userLogin() {
System.out.println("Login Success");
JwtUser user = (JwtUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
String token = userService.generateToken(authenticationService.loadUserByUsername(user.getUsername()));
JwtAuthenticationResponse response = new JwtAuthenticationResponse(token, user.getAuthorities().toArray(),user.getUsername());
return response;
}
}
在Spring Security Configuration中,我添加了以下内容
http.authorizeRequests().anyRequest().permitAll().and().formLogin().loginProcessingUrl("/login").defaultSuccessUrl("/login");
http.addFilterBefore(filter,UsernamePasswordAuthenticationFilter.class);
在这种情况下,它返回一个默认的Spring Login表单。它没有调用我的控制器方法。
我使用
发出请求http://localhost:8080/myapp/login
有人可以建议在登录成功后我必须做什么才能调用Controller,以便在登录后发送身份验证令牌。
感谢任何帮助!
谢谢
答案 0 :(得分:0)
如果您要提供自定义控制器进行登录,请删除以下
.formLogin().loginProcessingUrl("/login").defaultSuccessUrl("/login")
来自httpSecurity
配置。这将删除spring security的默认登录页面。
或者您可以关注:http://docs.spring.io/spring-security/site/docs/current/guides/html5/form-javaconfig.html
答案 1 :(得分:0)
我发现了我正在做的错误。我不需要为登录声明请求映射。我意识到Spring会照顾它。