Beschreibung:Angepasste Benutzerauthentifizierung Basis auf der Antwort eines API-Aufruf
Ich habe jetzt ein Bündel von Projekt Laravel im Einsatz. Die Implementierung der Benutzerauthentifizierung ist in Laravel einfach. Nun, die Struktur, mit der ich es zu tun habe, ist etwas anders - ich habe keine database
oder users
Tabelle lokal. Ich muss einen API-Aufruf machen, um abzufragen, was ich brauche.
habe ich versucht,
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);
}
}
Aktualisiert
ich an die API verbinden in meiner VSE
Klasse einen einfachen shell_exec
Befehl
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];
}
Ich wünschte, ich kann Ihnen das hier zeigen, aber es ist auf der VM auf meinem lokalen Computer, also bitte bleiben Sie hier bei mir. Im Grunde ist es
Execute
curl http://172.16.67.137:1234/vse/accounts
< --- aktualisiert
Antwort
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:"[email protected]"
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:"[email protected]"
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
Wie Sie das Passwort für Bob sehen kann, ist abc
und für Tom ist abd
Sie können [das Laravel-Authentifizierungssystem erweitern] (http://laravel.com/docs/5.1/authentication#adding-custom-authentication-drivers), indem Sie einen eigenen Benutzerprovider erstellen, der die Anmeldebestätigung und Benutzerdetails verarbeitet. und das als Auth-Treiber einstellen. – Bogdan
Wenn Sie feststellen, dass die Dokumentation nicht detailliert genug ist, dann können Sie sich die [Illuminate \ Auth \ DatabaseUserProvider'] (https://github.com/laravel/framework/blob/5.1/src/Illuminate/ Auth/DatabaseUserProvider.php) Quelle, um zu sehen, wie sie einen Datenbankbenutzer behandelt und die Logik auf Ihre Remote-API anwendet. – Bogdan
Wenn Sie Code bereitstellen würden, der zeigt, wie Sie eine Verbindung mit der API herstellen und welche Anforderungen Sie zum Authentifizieren und Abrufen der Benutzerinformationen stellen, könnte ich wahrscheinlich eine Antwort geben, wie die API-Aufrufe in Laravel integriert werden Auth-Treiber – Bogdan