我有一个受Spring Security登录表单身份验证保护的Web应用程序。现在,我想使用Jersey客户端对我的网页进行身份验证,我认为我应该像在普通浏览器上那样通过登录表单进行传递。
我的客户端身份验证代码如下
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:8080/authentication-inmem/j_spring_security_check");
Form form = new Form();
form.param("j_username", "car");
form.param("j_password", "scarvarez");
Response response = target.request()
.post(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE));
System.out.println(response.getStatus());
此代码始终产生404状态代码。当我在浏览器中输入链接http:// localhost:8080 / authentication-inmem / j_spring_security_check时,或仅将上述代码修改为GET请求。我通常可以收到用于身份验证登录表单的HTML代码。因此,我真的不知道为什么在POST中找不到该URL?
希望您能在这里告诉我我做错了什么,此外,我正在做的是在不使用浏览器的情况下对服务器进行身份验证的正确方法?
我已经找到了答案,默认情况下,Jersey客户端在收到状态为3xx的响应时将自动重定向。(在这种情况下为302)。现在,只需通过一些配置将功能关闭,即可在控制台上看到状态302。
ClientConfig clientConfig = new ClientConfig();
clientConfig.property(ClientProperties.FOLLOW_REDIRECTS, false);
Client client = ClientBuilder.newClient(clientConfig);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句