在我的Spring MVC应用程序中,我正在使用spring安全性。到目前为止,它仍然可以正常工作,但是我不得不承认,我不了解所有细节。
在同一应用程序中,用户可以通过rest api调用某些控制器功能。当用户(假设是Tom)执行此操作时,其身份验证将丢失。而是由匿名用户调用该控制器。
我找到了该“用户切换”到下面的代码。变量restCall包含一个指向我的应用程序的URL。如果用户Tom直接将其放置在浏览器中,则该调用将起作用。使用restcall,用户将更改为匿名用户。
1)当主叫用户(Tom)已经登录时,我可以防止这种情况吗? 2)由于这些服务应由尚未浏览应用程序Web界面的用户调用,因此我必须找到一种方法来通过其余调用本身进行登录。
private void callWebservice(HttpServletRequest req, String restCall) {
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response
= restTemplate.getForEntity(restCall, String.class);
logger.debug(response.toString());
//assertThat(response.getStatusCode(), equalTo(HttpStatus.OK));
}
答案 0 :(得分:0)
例如,您需要JSON Web令牌(JWT)身份验证。
步骤如下:
1)客户端进行身份验证,并使用用户名和密码发布请求
2)如果身份验证成功,则服务器将返回一个令牌,其中该令牌已编码为用户
3)在下一个调用GET或POST中,将JWT添加到header
中,这样服务器将知道您是谁,因为服务器可以解码令牌,并且还可以授予正确的权限和功能