我正在开发一个 Laravel 应用程序,我需要处理邀请链接。要求如下:
邀请链接如下所示:https://example.com/{task_id}/{random_task_link}。 当用户单击链接时,我希望 random_task_link 部分存储在 localStorage 中。 该页面要求用户在访问之前进行身份验证。为此,我在控制器中使用 auth 中间件:
public function __construct()
{
$this->middleware('auth');
}
问题在于,用于在 localStorage 中存储链接的 JavaScript 代码不会运行,因为页面在执行之前已重定向到登录页面。中间件将未经身份验证的用户重定向到登录页面,因此浏览器中永远不会访问邀请链接,以便我提取和存储 random_task_link。
我想确保在重定向发生之前 random_task_link 存储在 localStorage 中。这很重要,因为即使用户需要先登录,稍后也会使用 random_task_link。
在链接页面上使用 JavaScript 解析 URL 并将 random_task_link 存储在 localStorage 中,但由于重定向,这不起作用。
阅读有关中间件的 Laravel 文档,但我找不到在重定向发生之前执行自定义逻辑的方法。 考虑将 random_task_link 作为查询参数添加到登录 URL 等选项,但我不确定这是否是最佳方法。
Laravel 有没有办法在中间件重定向用户之前拦截请求并运行一些逻辑(例如,将 random_task_link 存储在 localStorage 中)?
在前端处理这个问题有意义吗?如果是这样,我如何在重定向发生之前可靠地捕获 random_task_link?
我是 Laravel 新手,希望得到任何解决此问题的指导或最佳实践。预先感谢您的帮助!
我不明白你的观点,有很多方法和点可以将数据存储在 localStorage 中 首先在创建 url 时同时保存在 localStorage 中 其次制作另一个中间件并在身份验证中间件之前调用它或仅在某些特定路线上应用 第三,将此身份验证中间件带到路由级别,即使分组,您也可以使用
Route::post('login', 'LoginController@login')->**withoutMiddleware**(['auth']);
来实现此功能,并执行您想做的任何操作