自定义身份验证名称函数-Laravel
我有多个认证流明应用程序设置,一个用于业务,一个用于典型用户。当我被认证为企业时,我想说: auth()->business()->id 而不是: auth()->user()->id创建一个新类自定义身份验证名称函数-Laravel,laravel,Laravel,我有多个认证流明应用程序设置,一个用于业务,一个用于典型用户。当我被认证为企业时,我想说: auth()->business()->id 而不是: auth()->user()->id创建一个新类 如果您使用的是“web”防护,那么它将使用SessionGuard类作为防护。您可以将其扩展如下: class MySessionGuard extends SessionGuard { private function isAuthenticatedAsBusiness($us
如果您使用的是“web”防护,那么它将使用SessionGuard
类作为防护。您可以将其扩展如下:
class MySessionGuard extends SessionGuard {
private function isAuthenticatedAsBusiness($user) {
// do your check here
return false; // or true accordingly
public function user() {
$user = parent::user();
return !$this->isAuthenticatedAsBusiness($user) ? $user : null;
}
public function business() {
$user = parent::user();
return $this->isAuthenticatedAsBusiness($user) ? $user : null;
}
}
然后在您的AuthServiceProvider
中注册此防护:
public function boot() {
Auth::extend("myweb", function ($app,$name, array $config) {
$guard = new MySessionGuard(
$name,
Auth::createUserProvider($config['provider']),
$app["session.store"],
$app["request"]
);
// This is copied from https://github.com/laravel/framework/blob/43bea00fd27c76c01fd009e46725a54885f4d2a5/src/Illuminate/Auth/AuthManager.php#L121
if (method_exists($guard, 'setDispatcher')) {
$guard->setDispatcher($this->app['events']);
}
if (method_exists($guard, 'setCookieJar')) {
$guard->setCookieJar($this->app['cookie']);
}
return $guard;
});
// ...
然后可以更新config/auth.php
'guards' => [
'web' => [
'driver' => 'myweb',
'provider' => 'users',
],
// ...
],
您的默认防护现在应该是自定义防护。使用Lumen和基于JWT令牌的身份验证。没有会话。您可能可以使用类似的方法来扩展默认的JWT令牌保护。