如何在Spring Security中处理登录成功

时间:2017-04-19 01:50:51

标签: spring spring-mvc authentication spring-security

道歉,如果我的问题看起来像新手会问的话。我是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,以便在登录后发送身份验证令牌。

感谢任何帮助!

谢谢

2 个答案:

答案 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会照顾它。