这不是 Joomla 或教程,(我对 php 很生疏)说...
首先要注意几点: * memcache 不安全,并且这个实现让你输入用户名/密码:确保它安全地位于防火墙后面,或者先加密它。如果您需要,很乐意提供一些指示。* memcache 不能保证在内存不足时不会丢弃数据。在实践中它是可靠的,但你的应用程序应该优雅地处理它。如果您不想丢失这样的数据,只需将诸如 couchbase 之类的东西替换为 memcache。* 仅仅返回一个令牌来响应登录可能不是很有用。我会将令牌连同用户名之类的内容以及任何其他信息进行 json 化,以使应用程序启动并运行,而无需进行第二次 API 调用。* 下面的代码不处理错误情况,如果这对您来说不明显,我可以更详细地调用它们。
如果是我,我会使用 memcache 来保存令牌并将该令牌映射到最初传递的用户名和密码。您可以使用 memcache 的生存时间免费获得您的到期时间。
将用户名/密码发送到服务器(最好通过 https)。创建一个随机字符串或 guid(例如: http: //php.net/manual/en/function.uniqid.php或http://www.lateralcode.com/creating-a-random-string-with-php/) , 这是你的令牌 将用户名/密码存储在内存缓存中,将该令牌作为键设置超时
$token = createToken("user1234", "pass2324");
print "Token: $token \n\n";
$credentials = credtialsFromToken($token);
print "Credentials from the token: ";
var_dump($credentials);
print "\n\n";
function setup() {
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
}
function createToken($user, $pass) {
$TOKEN_EXPIRE_TIME=60 * 60 * 24 * 30;
$credentials = array(
"user" => $user,
"pass" => $pass,
);
$token = uniqid( );
memcache_set($token, credentials, 'some variable', 0, 30);
return $token;
}
function credtialsFromToken($token) {
$credentials = memcache_get($token);
return $credentials;
}
如果令牌不正确或过期,他们会返回一个空凭据并必须登录。
编辑:将其清理为似乎在 php 中工作的函数...