Php 如何在公共api和站点之间进行类共享的身份验证?

Php 如何在公共api和站点之间进行类共享的身份验证?,php,api,Php,Api,例如,现在我为用户设置了一个类: userClass.php class User { static functionlistAll($params) { return (Array of all users); } } include('userClass.php'); echo json_encode(User::listAll($_GET)); 它用于api: /api/users.php class User { static function

例如,现在我为用户设置了一个类:

userClass.php

class User {
    static functionlistAll($params) {
        return (Array of all users);
    }
}
include('userClass.php');
echo json_encode(User::listAll($_GET));
它用于api:

/api/users.php

class User {
    static functionlistAll($params) {
        return (Array of all users);
    }
}
include('userClass.php');
echo json_encode(User::listAll($_GET));
然后该类也在站点内部使用


现在,当需要身份验证时,它变得更加复杂。登录到该站点的用户id存储在$_SESSION['uid']中,每个使用该id进行身份验证的应用程序都被授予访问密钥。对于这样的类设置,身份验证将如何工作?

是否确实要创建一个可以列出网站上所有用户的API?这似乎不是个好主意。但对于身份验证位,这可能会非常棘手,不应仓促行事。简单地存储一个唯一的ID是一个坏主意,因为这样一来,只需某人更改ID,瞧,他们就可以作为其他人进行身份验证。你的基本想法是正确的,但你需要某种数字签名(不同用户的数字签名不同)来证明你的网站设置了ID,而不是某个黑客试图作为其他人进行身份验证。您可能希望经常更改此签名,以便即使有人捕获了与您网站的交易,他们也无法伪造ID


尽管比手动验证更好,为什么不让其他人来处理呢?当今网站最糟糕的事情之一就是必须创建新的用户名和密码。为什么不使用OAuth和FacebookConnect,然后任何拥有Google帐户、Facebook帐户或任何OpenID帐户的用户都可以使用其预先存在的凭据自动登录到您的网站。

是的,我了解OAuth的工作原理,我正试图使api和网站使用一个后端和两个身份验证系统(oauth和网站会话登录)