spring - 如何在Spring的REST Api中的rest调用中发送密码字符串?

标签 spring rest api passwords

你好!

我已经使用 Spring Boot 的 Spring Security 进行了基本的用户身份验证。
我在应用程序开始时添加了一些默认用户,但我还必须实现一种在运行时创建新用户的方法。所以,我想创建一个新的 RestControler 调用来向 Spring Security 添加一个新用户。

明确地说,我想我已经弄清楚了,除了我在通话中实际发送请求参数的部分。

所以,我的问题是:

创建新用户时,在 rest api 调用中发送密码的最佳/最安全方法是什么?

我想使用 @PathVariable不是很安全,因为可以轻松拦截 url 调用:

@RequestMapping(value = "add/{login}/{password}", method = PUT)
public User add(@PathVariable("login") String login,
                @PathVariable("password") String password) {

    return us.addUser(login, password);
}
@RequestParam 也一样:

@RequestMapping(value = "add", method = PUT)
public User add(@RequestParam(value = "login") String login,
                @RequestParam(value = "password") String password) {

    return us.addUser(login, password);
}

也许将它们发送到标题中?

无论如何,这是我第一次做这样的事情,并且可以真正使用有关在这种情况下的常见做法的建议。干杯!

最佳答案

首先,您应该使用 POST方法而不是 PUT , 因为 PUT是一种幂等方法。

发送密码最安全的方式是使用 @RequestBody .你可以使用这样的方法:

@RequestMapping(value = "add", method = POST)
public User add(@RequestBody User user) {

    return us.addUser(user);
}

请求将如下所示:
{"username" : "user", "password" : "encoded_password"}

关于spring - 如何在Spring的REST Api中的rest调用中发送密码字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41509054/

相关文章:

linux - 如何使用 grep 多重模式并删除第一个模式

java - 关于File和InputStream参数的API设计问题

java - 是否可以使用 hibernate 实体类作为 GSON 的 POJO?

java - 如何在 Spring Boot (Tomcat) 中抑制/添加访问日志的条件

rest - 为什么Spring Security REST插件与JDK 1.6不兼容?

java - 如何在 Android 客户端中与 RESTful Web 服务通信

.net - Guid.Empty 应该导致 ArgumentException 或 ArgumentOutOfRangeException

java - 在 Spring Boot 中收到两个响应后如何并行调用 2 个外部 API 并执行合并

java - Spring boot 能够接受 Enum 作为请求参数

wcf - 导致在 WCF 中返回 HTTP 错误状态