通过Chrome扩展程序使用PHPAuth / PHPAuth登录网站

时间:2016-08-26 17:22:50

标签: php authentication google-chrome-extension

我开发了一个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打开受密码保护的页面时,它会显示用户登录表单。

有人可以告诉我我做错了什么,或者更好的方式来解决我的需要。

基本上,我保存用户每次登录时都需要登录并打开受保护的页面。

1 个答案:

答案 0 :(得分:1)

检查manifest.json是否包含您的网站网址和所有必需的子网域,例如

"permissions": [
  "http://example.com/",
  "http://*.example.com/",
  "https://example.com/",
  "https://*.example.com/"
],

此外,您可以通过不同的方式与网站进行沟通,例如:

  • 首次登录您的网站时,它可以返回一个令牌,您可以将其存储在浏览器local storage中,也可以存储在服务器端针对用户。

  • 此令牌应稍后从扩展程序连同请求一起发送到您的网站。

  • 在网站上你应该检查这个令牌是否存在;如果它属于合适的用户;并没有过期。如果正确则执行用户操作请求。

说实话,更安全的是使用OAuth_2.0,这比扩展上下文中的用户名/密码验证更安全

相关问题