我发现在angularjs中实现"记住我"的功能很困难。我已经浏览了几个关于stackoverflow的博客,但没有得到解决方案。
假设我在数据库中存储了 3 个用户名和密码。
[{username:1, password:1}, {username:2, password:2}, {username:3, password:3}]
现在,每次用户登录时,服务器端都会返回一个令牌。基于此令牌,我想实现我的"记住我"功能。
以下是我编写的代码,用于将用户名和密码存储在服务中的cookie中。
if (rememberLogin) {
$cookieStore.put("userName", login);
$cookieStore.put("password", password);
}
这是我在登录页面加载时初始化的代码
function init() {
if ($cookieStore.get("userName")!==undefined && $cookieStore.get("password")!==undefined){
self.emailAddress=$cookieStore.get("userName");
self.password=$cookieStore.get("password");
}
}
使用这种方法,我只能记住一个用户,而不能记住其他用户,而且我知道将密码存储在 cookie 中是不安全的。
请帮助我或建议我一些高质量的代码来实现这一点。任何帮助,不胜感激。谢谢
当$cookieStore
被弃用时,请尝试移动到$cookies
:
$cookies.putObject('key', value);
$cookies.getObject('key');
$cookies.remove('key');
当然 - 即使在学校或私人项目中,在cookie中存储密码也是您必须避免的事情。了解如何使用 Sessions 和 PHPSESSID cookie
就记住我功能而言,您可以在一次登录尝试中一次从一个用户登录,当第一个用户已经在会话(浏览器会话)中时,没有任何第二个用户登录。您可以在 Cookie 中存储任意数量的用户信息,除非您不删除前一个用户的 Cookie。一个简单的场景是第一个用户登录,并且您保存在浏览器cookie中的这些详细信息,其他用户在第一次注销之前无法从该浏览器登录。此外,每个网站都这样做,2 不同的用户无法从一个浏览器登录。目前还不清楚您想要实现什么。据我了解,您的问题是您在第一个用户注销或重新启动服务器后没有清除以前的cookie。尝试
$cookies.remove("userInfo")