我编写了自己的用户角色系统,但我不知道如何在我的中间件路由中实现验证。
中间件类正在调用每个请求。
我收到了$ request-> user()但我无法访问这些属性来验证用户是否拥有正确的权限。
我的中间件控制器如下所示:
namespace App\Http\Middleware;
use Closure;
use Activation;
use Cartalyst\Sentinel\Laravel\Facades\Sentinel;
class AccountMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$user = Sentinel::findByCredentials([
'login' => $request->user()->attributes['email']
);
...
return $next($request);
}
}
它不起作用。
如果我试图转储$ request-> user(),我可以看到所有属性但有保护。 我需要改变什么才能使其发挥作用?
答案 0 :(得分:1)
访问Eloquent模型属性是通过访问者完成的,在本例中是通过__get
magic method。所以你不需要通过$attributes
属性数组访问它们,只需要这样:
$request->user()->email;
上面将返回用户电子邮件,因为Illuminate\Database\Eloquent\Model::__get
方法已经自动获取指定的属性。
如果您愿意,您甚至可以在读取或写入数据库时定义自己的Accessors or Mutators来修改属性值。