我正在尝试使用多个表进行基于子域的身份验证。因此,我试图setModel
在运行时使用 Sentinel 的函数来设置模型实例。
所以在我的路线文件中,我有一些简单的逻辑:
if (Request::getHost() == $url) {
Sentinel::getUserRepository()->setModel('App\Client');
} else {
Sentinel::getUserRepository()->setModel('App\User');
}
逻辑是一个 URL 使用一个模型,另一个使用另一个模型。现在,当我尝试App\Client
通过执行加载时,dd(Sentinel::getUserRepository());
我得到一个回报,例如:
IlluminateUserRepository {#113 ▼
#hasher: NativeHasher {#114}
#model: "App\Client"
#dispatcher: Dispatcher {#23 ▶}
#dispatcherStatus: true
}
这很好,但是,当我调用 时Sentinel::getUser();
,我得到以下输出:
EloquentUser {#230 ▼
#table: "users"
#fillable: array:5 [▶]
#hidden: array:1 [▶]
#persistableKey: "user_id"
#persistableRelationship: "persistences"
#loginNames: array:1 [▶]
#connection: "mysql"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:12 [▶]
#original: array:12 [▶]
#casts: []
#dates: []
#dateFormat: null
#appends: []
#events: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#visible: []
#guarded: array:1 [▶]
#permissionsInstance: null
}
这是指App\User
模型而不是我的App\Client
模型。
我不明白为什么,但我似乎无法让 Sentinel 的功能来查看我试图引用的模型。
这是我的客户模型作为参考。
namespace App;
class Client extends \Cartalyst\Sentinel\Users\EloquentUser
{
/**
* The fields for sentinel to authenticate (login)
*
* @var array
*/
protected $loginNames = ['email'];
/**
* The table associated with model.
*
* @var String
*/
protected $table = 'clients';
/**
* Used for mass assignment fields.
*
* @var Array
*/
protected $fillable = ['email', 'password', 'permissions', 'last_login', 'first_name', 'last_name'];
}
我使用了 Github Wiki 中的本指南,但是正如您所见,我没有实现我想要做的事情。
如何在运行时使用这种设置模型的方法并将正确的模型与所有哨兵命令一起使用?