编辑:我意识到我最初的问题是由于我自己的愚蠢,但现在有一个稍微不同的问题
控制器创建 api 密钥:
$apiKey = new ApiKey;
// Make some random strings for the api key / secret
$key = 'test';
$secret = 'test';
$apiKey->api_key = $key;
$apiKey->api_secret = Hash::make($secret);
$apiKey->save();
过滤器进行身份验证:
// Set the auth model to use the API keys table
Config::set('auth.model', 'App\Models\ApiKey');
$credentials = array('api_key' => $_SERVER['PHP_AUTH_USER'], 'api_secret' => $_SERVER['PHP_AUTH_PW']);
// Attempt to authenticate
if (!Auth::attempt($credentials)) {
return Response::make('Invalid Credentials.', 401);
}
模型 ApiKey.php
<?php
namespace App\Models;
use Hash;
use Illuminate\Auth\UserInterface;
class ApiKey extends \Eloquent implements UserInterface {
protected $table = 'api_keys';
protected $fillable = array('name', 'api_key', 'api_secret', 'active', 'allowed_ip');
public function getAuthIdentifier()
{
return $this->getKey();
}
public function getAuthPassword()
{
return $this->api_secret;
}
}
我的数据库有一个表“api_keys”,在该表中有一个字段“api_key”和“api_secret”。
身份验证总是失败,我没有收到任何错误。
编辑 2
我已经部分解决了我的问题。
我发现通过将我的数据库字段从 api_key 和 api_secret 重命名为简单的用户名和密码,一切正常。
我还可以将用户名字段更改为我喜欢的任何内容。
但是,如果我更改密码字段名称,则身份验证不起作用。所以我认为模式一定有问题,特别是这一点:
public function getAuthPassword()
{
return $this->api_secret;
}