【发布时间】:2016-01-24 16:57:35
【问题描述】:
说明:
我现在一直在使用 Laravel 进行一系列项目。
在 Laravel 中实现用户认证很简单。现在,我正在处理的结构有点不同 - 我在本地没有 database 或 users 表。我必须调用 API 来查询我需要的内容。
我试过了
public function postSignIn(){
$username = strtolower(Input::get('username'));
$password_api = VSE::user('password',$username); // abc <-----
$password = Input::get('password'); // abc <-----
if ( $password == $password_api ) {
//Log user in
$auth = Auth::attempt(); // Stuck here <----
}
if ($auth) {
return Redirect::to('/dashboard')->with('success', 'Hi '. $username .' ! You have been successfully logged in.');
}
else {
return Redirect::to('/')->with('error', 'Username/Password Wrong')->withInput(Request::except('password'))->with('username', $username);
}
}
更新
我在 VSE 类中使用简单的 shell_exec 命令连接到 API
public static function user($attr, $username) {
$data = shell_exec('curl '.env('API_HOST').'vse/accounts');
$raw = json_decode($data,true);
$array = $raw['data'];
return $array[$attr];
}
我希望我可以在这里向您展示,但它在我本地机器上的 VM 上,所以请留在我这里。基本上,它
执行
curl http://172.16.67.137:1234/vse/accounts
回应
Object
data:Array[2]
0:Object
DBA:""
account_id:111
account_type:"admin"
address1:"111 Park Ave"
address2:"Floor 4"
address3:"Suite 4011"
city:"New York"
customer_type:2
display_name:"BobJ"
email_address:"bob@xyzcorp.com"
first_name:"Bob"
last_name:"Jones"
last_updated_utc_in_secs:200200300
middle_names:"X."
name_prefix:"Mr"
name_suffix:"Jr."
nation_code:"USA"
non_person_name:false
password:"abc"
phone1:"212-555-1212"
phone2:""
phone3:""
postal_code:"10022"
state:"NY"
time_zone_offset_from_utc:-5
1:Object
DBA:""
account_id:112
account_type:"mbn"
address1:"112 Park Ave"
address2:"Floor 3"
address3:"Suite 3011"
city:"New York"
customer_type:2
display_name:"TomS"
email_address:"tom@xyzcorp.com"
first_name:"Tom"
last_name:"Smith"
last_updated_utc_in_secs:200200300
middle_names:"Z."
name_prefix:"Mr"
name_suffix:"Sr."
nation_code:"USA"
non_person_name:false
password:"abd"
phone1:"212-555-2323"
phone2:""
phone3:""
postal_code:"10022"
state:"NY"
time_zone_offset_from_utc:-5
message:"Success"
status:200
您可以看到 Bob 的密码是 abc,Tom 的密码是 abd
【问题讨论】:
-
您可以extend the Laravel authentication system 创建自己的用户提供程序来处理登录验证和用户详细信息,并将其设置为身份验证驱动程序。
-
如果您发现文档不够详细,那么您可以查看
Illuminate\Auth\DatabaseUserProvider源代码,了解它如何处理数据库存储用户并将逻辑应用到您的远程 API。 -
如果您提供一些代码来展示您如何连接到 API,以及您为验证和获取用户信息所做的请求,那么我可能能够提供有关如何连接到 API 的答案将 API 调用集成到 Laravel Auth 驱动程序中。
-
那么身份验证将通过检查用户输入的凭据与 cURL 请求返回的凭据来完成?
-
是的,先生。我知道这很糟糕,但这只是项目的开始。它仅用于演示目的。
标签: php laravel authentication laravel-5.1