[英]Java: User Authenticate Using Jersey Jax-RS with Spring Security
我正在尝试使用Jersey Jax-RS Api和Spring-Security进行用户身份验证。 但是我可以做到这一点。 泽西岛提供了一些基本的身份验证方法,但我需要使用spring-security。 我正在尝试通过Spring安全性手动验证UserName
和Password
,但是它抛出了空指针异常。 我的代码如下:
@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.