魔术链接的签名URL(无密码登录)

时间:2019-07-12 20:29:21

标签: php laravel laravel-5

我想知道我是否可以使用签名URL进行Magic Link登录(无密码)。我知道人们正在使用存储在数据库中的令牌,以后再比较每个令牌所属的令牌以及是否仍然有效。

    /**
     * Get the verification URL for the given notifiable.
     *
     * @param  \App\User  $user
     * @return string
     */
    protected function authenticationUrl(User $user): string
    {
        return URL::temporarySignedRoute(
            'login.magic_link.authenticate',
            now()->addMinutes(10),
            ['uuid' => $user->uuid]
        );
    }

我正在使用Laravel提供的签名URL将链接发送到我的应用程序。而且,如果用户单击链接,他将被重定向到authenticate方法。

    /**
     * Authenticate validated user.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\View\View
     * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
     */
    public function authenticate(Request $request): RedirectResponse
    {
        try {
            $user = User::where($request->only('uuid'))->firstOrFail();
        } catch (ModelNotFoundException $e) {
            return redirect()->route('login.magic_link.index')
                ->withErrors(['email' => 'Email address could not be found.']);
        }

        Auth::login($user);
        return redirect()->route($this->redirectTo);
    }

问题是这是否安全并且被认为是一种好习惯。如果不好的话,有人可以向我解释原因吗?

0 个答案:

没有答案