首先抱歉我的英语,我会尽力做到最好。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搜索,并没有发现其他的方式
任何想法?