我正在使用URLConnection类打开与WebService的连接。我还设置了基本授权的请求属性,如下所示:
c.setRequestProperty("Authorization", "Basic " + usernameAndPasswordEncoded);
其中c是URLConnection类型的对象。所以这是WebService调用的客户端。现在在服务器端,我需要从会话中获取用户名:
User user = (User) request.getSession().getAttribute("user");
但这不会获得用户名。另外,如果我查看调试模式,我会在HttpSession对象中看到一个匿名的userName。 如何解决此问题,以便通过客户端将用户名发送到WebService服务器进行授权?
谢谢大家!
答案 0 :(得分:3)
在服务器端,您需要在web.xml中指定登录方法。例如,
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>My App</realm-name>
</login-config>
完成此操作后,应使用request.getRemoteUser()
。
答案 1 :(得分:0)
servlet规范提供了明确的抽象 - 你需要的是request.getRemoteUser()
。,或者request.getUserPrincipal()