我们已经构建了一个REST API。 API已构建并正常运行,并对每个请求使用基本身份验证。
我们现在希望构建使用REST API的其他Web应用程序。但是,我们在解决如何在Web应用程序中进行身份验证时遇到了问题。
理想情况下,我们希望Web应用程序显示登录页面,并且用户将输入其REST API的凭据。问题是,一旦用户“登录”到Web应用程序,Web应用程序存储输入凭据的方式和位置,请记住需要存储它们才能提交REST API在需要进一步请求时的凭据。
现代网络浏览器必须做类似的事情,不是吗?当我们在浏览器中访问REST API时,它会询问我们一次用户名和密码,但后续请求会重新提交我们之前输入的凭据。我们如何在网络应用中复制这个?我假设将它们存储在会话中是一个坏主意......?
- 编辑
可能值得指出的是,REST API的请求将来自服务器,因此不希望将它们存储在客户端。
答案 0 :(得分:1)
我认为你可能会犯这个错误。如果您有一些业务要求在每个请求中提交用户名和密码,您应该找到提出要求的人并且非常努力地向他们说一些意义。根本没有理由。这就是会议的目的。
您只需对用户进行一次身份验证即可。验证后,您为该用户提供会话。您不再需要进行身份验证,因为会话会告诉您该用户是谁。
让用户在每次请求时输入他们的凭据都会让他们感到烦恼。将其存储在客户端(在cookie或本地存储中)存在问题,并且具有严重的安全隐患。在所有情况下,每次请求通过线路发送用户名/密码对(理论上通过https安全)只是一个坏主意。这几乎是会话的标志性用例,使用它们。