繁体   English   中英

Java:用户使用带有Spring Security的Jersey Jax-RS进行身份验证

[英]Java: User Authenticate Using Jersey Jax-RS with Spring Security

我正在尝试使用Jersey Jax-RS Api和Spring-Security进行用户身份验证。 但是我可以做到这一点。 泽西岛提供了一些基本的身份验证方法,但我需要使用spring-security。 我正在尝试通过Spring安全性手动验证UserNamePassword ,但是它抛出了空指针异常。 我的代码如下:

@Path(value = "/")
public class UserLoginApi {

@Autowired
private AuthenticationManager authenticationManager;

@POST
@Path(value = "test")
public void test() {
    System.out
            .println("Hello REST **************************************** ");
}

@POST
@Path(value = "login")
@Consumes(MediaType.APPLICATION_JSON)
public Response userlogin(User user, @Context HttpServletRequest request) {
    UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(
            user.getUsername(), user.getPassword());
    Authentication authentication = authenticationManager.authenticate(authenticationToken);
    User user2 = (User) SecurityContextHolder.getContext();
    System.out.println(user2);
    return Response.status(200).entity("OK").build();
}
}

在此代码中, authenticationManager为null,因此抛出异常。 还有另一种方法吗? 或使用运动衫无法使用Spring-Security

请提供一些方法。

谢谢

如果要在项目中使用Spring Security,则应使用AbstractAuthenticationProcessingFilter- > docs

并覆盖tryAuthentication方法。 在此方法的主体中,您将能够从HttpRequest获取您的用户名和密码。

请记住使用spring-security.xml文件配置spring安全性。

稍后在控制器UserLoginApi中,您将能够使用SecurityContextHolder.getContext()。getAuthentication()检查用户是否成功通过身份验证。

另请参阅类:

  • org.springframework.security.web.authentication.AuthenticationFailureHandler

  • org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler

  • org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM