vue.js 在laravel控制器中,使用条件仅为管理员用户提取数据

6yt4nkrj  于 2022-12-19  发布在  Vue.js
关注(0)|答案(4)|浏览(142)

我只想在授权者是管理员时提取数据。

用户控制器:

public function index()
{
    if (auth::user()->type == 'admin') {

        return User::where('type','!=','admin')->latest()->paginate(100);
    }
}

出现错误
正在尝试获取非对象的属性“type”。

2vuwiymt

2vuwiymt1#

此代码:

if (auth::user()->type == 'admin') {

应该是。

if (auth()->check() && auth()->user()->type == 'admin') {

说明:

  • auth()->check()--确保有用户登录。
  • &&-如果为false,则在第一次检查后停止
  • auth()->user()->type--从用户获取type属性
pftdvrlh

pftdvrlh2#

如果使用基于角色的身份验证,则可以通过在用户模型中创建函数来检查用户角色

用户模型

public function isAdministrator()
{
   return $this->hasRole('admin');
}

用户控制器

class userController
{
   public function index()
  {
      if(Auth::user()->isAdministrator())
      {
         # code...

      } 
}
vdgimpew

vdgimpew3#

试试这个:创建中间件并通过中间件传递路由,它会工作

public function handle($request, Closure $next)
{
    if (auth()->user() && auth()->user()->type != 'admin')
    {
        return redirect('/unauthorized');
    }
    return $next($request);
}
fgw7neuy

fgw7neuy4#

您可以使用方法hasRole来检查角色是否为admin。

public function index()
{
    if (auth::user()->hasRole('admin')) {

        return User::latest()->paginate(100);
    }
}

相关问题