我开发了一个Chrome扩展程序,它在我的网站上调用了一些API,后者又使用PHPAuth / PHPAuth进行身份验证。基本上,我让用户输入网站的用户名和密码作为扩展选项,我在我的网站上调用登录API,如下所示。
if (isset($_POST['email']) && isset($_POST['password'])) {
$email = $_POST['email'];
$password = $_POST['password'];
if($auth->isLogged()) {
$userId = $auth->getSessionUID($_COOKIE[$authConfig->cookie_name]);
echo json_encode([
'userId' => $userId,
]);
die();
}
$login = $auth->login($email, $password, true);
if($login['error']) {
die($login['message']);
} else {
$userId = $auth->getSessionUID($login['hash']);
echo json_encode([
'userId' => $userId,
]);
die();
}
} else {
die('Error');
}
这可以暂时考虑用户进行身份验证,但实际上并未将用户登录到网站中。换句话说,当我通过iFrame打开受密码保护的页面时,它会显示用户登录表单。
有人可以告诉我我做错了什么,或者更好的方式来解决我的需要。
基本上,我保存用户每次登录时都需要登录并打开受保护的页面。
答案 0 :(得分:1)
检查manifest.json是否包含您的网站网址和所有必需的子网域,例如
"permissions": [
"http://example.com/",
"http://*.example.com/",
"https://example.com/",
"https://*.example.com/"
],
此外,您可以通过不同的方式与网站进行沟通,例如:
首次登录您的网站时,它可以返回一个令牌,您可以将其存储在浏览器local storage中,也可以存储在服务器端针对用户。
此令牌应稍后从扩展程序连同请求一起发送到您的网站。
在网站上你应该检查这个令牌是否存在;如果它属于合适的用户;并没有过期。如果正确则执行用户操作请求。
说实话,更安全的是使用OAuth_2.0,这比扩展上下文中的用户名/密码验证更安全