【发布时间】:2021-06-10 13:10:55
【问题描述】:
我有一个 Spring Boot 应用程序,它作为 api 工作。如果需要,它会从我的数据库返回 json 数据。现在我想运行一个网站,在其中使用从我的 api 接收到的数据。我想过使用 Spring Security 对想要获取我的数据的用户进行身份验证。在客户端,我知道的唯一解决方案是在我的 Javascript 文件中写入用于身份验证的用户名和密码并将其发送到 api。问题是,如果我运行该网站,每个人都可以阅读它。有没有其他解决方案来解决这个问题?
function req(method, url){
var xmlhttp = new XMLHttpRequest();
xmlhttp.open(method, url, false);`
//And somehow also sent username and password here
xmlhttp.send();
if (xmlhttp.readyState==4 && xmlhttp.status==200){
return JSON.parse(xmlhttp.responseText);
}
}
【问题讨论】:
-
永远不要将凭据存储在静态代码文件中。可以通过表单输入用户名/密码,然后使用jwt/cookie来管理认证和授权
-
但是如果我使用jwt会不会一样。我的意思是我不必在我的代码中编写令牌吗?
-
一旦您对用户进行身份验证,您的服务器将向客户端返回一个使用私钥签名的 JWT。您将把这个 jwt 保存在内存中(或保存在每次请求发送的 cookie 中)。您将在每个请求中包含 jwt,以便服务器可以对您进行身份验证。我对spring不太熟悉,所以我不能告诉你实现。但我确定有一些库可以在春季使用 jwt。 (所以你没有在代码中写任何敏感数据,只是在运行时将它存储在一个变量中)
-
我的问题是,我不知道如何对用户进行身份验证。我想在我的代码中通过 url 调用 api,所以我必须在那里传递身份验证数据。但是怎么做?如果我写下我的用户名和密码,每个人都可以看到它们。
-
您不会通过在代码中传递硬编码密码来访问需要身份验证的 API 端点。这就是您在应用程序中使用登录/身份验证表单的原因。您必须在运行时获取密码(使用表单),然后访问您的 api。您可以在您的应用中创建一个表单并自己处理身份验证,或者使用像谷歌这样的 OAuth 服务来为您完成。
标签: javascript spring security authentication xmlhttprequest