首先抱歉我的英語,我會盡力做到最好。Laravel 4自定義認證
我是Laravel的新手,我試圖通過一個SOAP WS實現自定義auth,我聲明實現UserProviderInterface的新類。我成功實現retrieveByCredentials和validateCredentials方法,但因爲我沒有訪問數據庫或全球用戶信息我不能實現retrieveByID方法。有沒有什麼辦法使自定義Auth不基於用戶ID?
我需要:
- Login and validate user throught SOAP WS
- Store User Info returned by WS.
- Remember me functionality
- Secure routes based on logged user and level of access
- Logout
實現類:
<?php
namespace Spt\Common\Providers;
use Illuminate\Auth\UserProviderInterface;
use Illuminate\Auth\GenericUser;
use Illuminate\Auth\UserInterface;
class AuthUserProvider implements UserProviderInterface{
private $user;
public function __construct(){
$this->user = null;
}
public function retrieveByID($identifier){
return $this->user;
}
public function retrieveByCredentials(array $credentials){
$client = new \SoapClient('webserviceurl');
$res = $client->Validar_Cliente($credentials);
$res = $res->Validar_ClienteResult;
if($res->infoError->bError === true){
return;
}
$res->id = $res->id_cliente;
$user = new GenericUser((array) $res);
return $user;
}
public function validateCredentials(UserInterface $user, array $credentials){
//Assumed that if WS returned a User is validated
return true;
}
}
我認爲,重新實現UserProviderInterface
它不是解決辦法,但我用Google搜索,並沒有發現其他的方式
任何想法?