假设我创建了一个与ASP.NET API链接的AngularJS Web应用程序。是否可以接受用户的用户名和密码,将其存储在缓存(客户端)中,然后用它在整个用户会话中进行api调用?
当他们退出时,缓存将被删除。
答案 0 :(得分:3)
这可能是你可以做的最糟糕的做法。您永远不应该在任何地方保存密码,甚至不能在您的数据库(您在db中存储哈希,但这是单独的主题)
通常情况之一是,当用户键入其用户名/密码时,您的(或身份验证)服务器会生成访问令牌(现在是Json Web令牌),您可以在本地存储。
是您正在寻找的将访问令牌短寿命与某种刷新令牌相结合的方法。在javascript端保存的所有内容都可能容易受到XSS和其他类型的攻击。</ p>
答案 1 :(得分:1)
不,这绝不是一个好习惯。您应该做的是将会话或访问令牌保存在浏览器中并使用它来代替
答案 2 :(得分:0)
在客户端缓存中存储用户名和密码确实不是一个好习惯(顺便说一下,你使用的缓存是什么?)。原因是JavaScript更容易被破解,并且您不能不惜任何代价完全控制客户端的浏览器。
您可能希望通过名为JSON Web Tokens (JWT)的内容。
这些公开了在客户端存储用户凭据(谨防存储机密信息,如密码)的安全方式,并且可以轻松用于API调用。您可以选择使用适合您语言的SDK;请参阅上面的链接。