php - 魔术链接的签名 URL(无密码登录)
问题描述
我想知道是否可以使用签名 URL 进行 Magic Link 登录(无密码)。我知道人们正在使用存储在数据库中的令牌,然后比较每个令牌属于谁以及是否仍然有效。
/** * 获取给定通知的验证 URL。 * * @param \App\User $user * @return 字符串 */ 受保护的函数 authenticationUrl(User $user): 字符串 { 返回 URL::temporarySignedRoute( 'login.magic_link.authenticate', 现在()->添加分钟(10), ['uuid' => $user->uuid] ); }
我正在使用 Laravel 提供的签名 URL 将链接发送到我的应用程序。如果用户单击该链接,他将被重定向到身份验证方法。
/** * 验证经过验证的用户。 * * @param \Illuminate\Http\Request $request * @return \照亮\查看\查看 * @throws \Illuminate\Database\Eloquent\ModelNotFoundException */ 公共功能验证(请求 $request):重定向响应 { 尝试 { $user = User::where($request->only('uuid'))->firstOrFail(); } 捕捉 (ModelNotFoundException $e) { 返回重定向()->路由('login.magic_link.index') ->withErrors(['email' => '找不到电子邮件地址。']); } 身份验证::登录($用户); 返回重定向()->路由($this->redirectTo); }
问题是这是否安全并被视为一种良好做法。如果不好,有人可以向我解释为什么吗?
解决方案
推荐阅读
- matplotlib - Matplot-lib 2.2.3 绘图不再在我的 Python 3.7 Spyder 控制台中工作
- python - 为什么我不能从我的 kv 文件的构造函数中引用 self.text_1 ?
- git - git revert 出现的问题导致合并冲突
- python - Tkinter 网格和小部件大小
- python - 在 django 中将表单连接到管理页面
- scala - Spark 如何处理涉及 JDBC 数据源的故障场景?
- c++ - Clang 编译器/链接器找不到 x86_64 架构的符号 NSMenuItem
- anaconda - Jupyter Notebook nb_conda_kernel 无法找到当前环境
- sql - dbms 输出函数的 PL/SQL 过程错误
- ios - 如何在 Xcode 10 中切换按钮文本和颜色 - UIControl.State.normal 缺失