我通过基本身份验证获得了一个简单的REST Applikation。 身份验证工作正常,我可以发布/获取我的数据。 但经过身份验证并到达Controller后,我需要用户名/密码 在我的控制器中使用它。 是否有可能从Heades或其他东西得到这个?或者我真的需要使用用户名/密码POST / GET我的数据并忽略身份验证? 我以为它可以重复使用。
向你提供帮助。
答案 0 :(得分:0)
您可以在REST方法中使用@RequestHeader注释。
还有一个选择是使用可以自动装入控制器的HttpServletRequest,然后使用getHeader方法获取标头数据(eg)
答案 1 :(得分:0)
好的,这很简单,只需要在你的控制器中执行此操作:SecurityContextHolder.getContext().getAuthentication().getName();
这样我就得到了我的用户名。密码是版本3.1的null,但我想我不需要它。
所有人都试图帮助我:)
答案 2 :(得分:0)
protected HttpHeaders getAuthentificatedRequestHeaders(String aUsername, String aPassword) {
HttpAuthentication authHeader = new HttpBasicAuthentication(aUsername, aPassword);
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAuthorization(authHeader);
List<MediaType> media = new ArrayList<MediaType>();
media.add(MediaType.APPLICATION_JSON);
httpHeaders.setAccept(media);
return httpHeaders;
}
public UserMdl getUserById(long id) {
final String url = getResourceUrl("user/{id}");
HttpEntity<?> requestEntity = new HttpEntity<Object>(getAuthentificatedRequestHeaders(Config.REST_USERNAME, Config.REST_PASSWORD));
RestTemplate restTemplate = getRestTemplatWithJsonConverter();
ResponseEntity<UserMdl> response = restTemplate.exchange(url,HttpMethod.GET, requestEntity, UserMdl.class, id);
UserMdl user = response.getBody();
return user;
}
这是我在Android客户端中使用的一些代码。 “getAuthentificatedRequestHeades(..)”方法是抽象类的一部分,用于所有请求。另一种方法是使用代码而不是..