我编写了自己的用户角色系统,但我不知道如何在中间件路由中实现验证。
中间件类正在对每个请求进行调用。
我提高了$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(),我可以看到所有的属性,但都是受保护的。我需要改变什么,才能让它发挥作用?
发布于 2016-02-05 23:09:02
访问雄辩的模型属性是通过访问器完成的,在本例中是通过魔术法完成的。因此,您不需要通过$attributes属性数组访问它们,只需如下所示:
$request->user()->email;上面的内容将返回用户电子邮件,因为Illuminate\Database\Eloquent\Model::__get方法已经自动获取指定的属性。
如果愿意,您甚至可以定义自己的存取器或变异器,以便在将属性值读取或写入数据库时修改属性值。
https://stackoverflow.com/questions/35234945
复制相似问题