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

Sha*_*ika 5 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');
            }
Run Code Online (Sandbox Code Playgroud)

这可以暂时考虑用户进行身份验证,但实际上并未将用户登录到网站中.换句话说,当我通过iFrame打开受密码保护的页面时,它会显示用户登录表单.

有人可以告诉我我做错了什么,或者更好的方式去做我需要的东西.

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

Paw*_*iel 1

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

"permissions": [
  "http://example.com/",
  "http://*.example.com/",
  "https://example.com/",
  "https://*.example.com/"
],
Run Code Online (Sandbox Code Playgroud)

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

  • 当您第一次登录网站时,它可能会返回一个令牌,您可以将其存储在浏览器本地存储中以及针对用户的服务器端。

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

  • 在网站方面,您应该检查此令牌是否存在;如果它属于正确的用户;并且没有过期。如果正确则执行用户操作请求的操作。

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