大家好!
我正在开发一个具有中间件的API,该中间件使用唯一ID对用户进行身份验证。确保此用户存在后,我想将他的数据库ID发送到下一个控制器,无论哪个。
谢谢!
答案 0 :(得分:1)
这是个好主意吗?或者我应该在中间件完成后以某种方式获得该ID?
这取决于您想要做什么以及如何声明路线。 路由是Laravel初始化的第一件事。你不能在运行时传递参数(如果我错了,请纠正我。)
另外,控制器在所有midlewares完成工作后调用。
我不能保证它更美丽"这样做的方法,但我想要在运行时将参数传递给控制器时使用Session::flash()
或Session::put()
。
如果参数具有一个请求生命周期,则使用Session::flash()
;如果我希望变量更加“一致”,则使用Session::put()
整个应用程序。
我不知道我是否清楚,请告诉我:)
答案 1 :(得分:0)
好吧,只要您不通过HTTP协议发送该ID,您应该没问题,因为用户将无法篡改数据。
也就是说,如果您使用的是Laravel的内置Auth
模块,您应该只在另一个控制器上进行Auth::user()
调用,它将为您提供经过身份验证的用户。
如果这不是一个选项,您应该在另一个接受$id
作为参数的控制器中创建一个函数。您可以通过构建第二个控制器$secondController = App->make(SecondController)
然后$secondController->receiverFunction($id)
答案 2 :(得分:0)
如果您希望应用程序中提供当前经过身份验证的用户,只需将其添加到基本控制器:
<?php namespace App\Http\Controllers;
use Illuminate\Contracts\Auth\Guard;
abstract class Controller {
protected $auth;
protected $currentUser;
public function __construct(Guard $auth)
{
$this->auth = $auth;
$this->currentUser = $this->auth->user();
}
}