繁体   English   中英

在Dingo API laravel包中监听Auth事件

[英]Listening for Auth events in Dingo API laravel package

我使用了Dingo API包来创建类似于Telegram api的api。

第一步,用户发送了一些参数,然后我验证了这些参数,如果所有内容都是真实的,则用户信息包括返回的令牌。 像这样 :

public function signIn (Request $request)
{
    $phone_number    = $request->get('phone_number');
    $phone_code_hash = $request->get('phone_code_hash');
    $phone_code      = $request->get('phone_code');

    if ($this->verifyCode($phone_code_hash, $phone_code, $phone_number)) {
        $user = User::where('phone_number', $phone_number)->firstOrFail();
        $user->injectToken();
        return $this->response->item($user, new UserTransformer);
    } else {    
        return [
            'success'     => false,
            'type'        => 'PHONE_NUMBER_IS_NOT_REGISTERED',
            'code'        => 703,
            'message'     => 'Phone Code Is Correct But Phone Number Is Not Registered.'
        ];
    }
}

如您所见, signIn方法具有用户身份验证职责。

现在,我不知道如何监听此处描述的身份验证事件,例如Illuminate\\Auth\\Events\\AuthenticatedIlluminate\\Auth\\Events\\Login等。

实际上,我想在用户登录成功时运行一个事件。

我正在使用larvel 5.3。

任何解决方案?

这些事件不受Dingo的支持。

但是,您可以创建自定义中间件,以在成功时触发Illuminate\\Auth\\Events\\Authenticated事件,如下所示:

app / Http /中间件/Auth.php

namespace App\Http\Middleware;

use Dingo\Api\Http\Middleware\Auth as BaseAuth;
use Closure;

class Auth extends BaseAuth {

     /**
     * Perform authentication before a request is executed.
     *
     * @param \Illuminate\Http\Request $request
     * @param \Closure                 $next
     *
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $route = $this->router->getCurrentRoute();
        if (! $this->auth->check(false)) {
            $this->auth->authenticate($route->getAuthenticationProviders());
            event(new \Illuminate\Auth\Events\Authenticated($this->auth->getUser());
        }
        return $next($request);
    }
}

最后,只需注册该中间件并将其添加到您的路由中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM