【问题标题】:Best Practice: Authenticated User and User Management最佳实践:经过身份验证的用户和用户管理
【发布时间】:2015-05-23 03:29:06
【问题描述】:

对 Laravel 来说有点新意,我正在 Laravel 5 中构建一个应用程序,并且我拥有经过身份验证的用户,然后他正在管理用户记录。我目前正在使用 Zizaco Entrust,并且角色和权限都设置得很好。目前,我正在通过控制器为经过身份验证的用户将用户对象传递给我的模板,因为这是我可以找到通过委托检查 hasRole 的唯一方法。当我开始管理用户记录时,这成为一个问题,因为我想传递用户和用户并使用 REST,但现在用户已被登录用户占用。

我基本上是在寻找让登录用户始终可用的最佳做法(因此页眉有他们的姓名和信息,我总是可以记录他们对数据的编辑),然后用户模型加载用户索引,编辑等。我正在研究模型绑定,但现在这让我更加困惑 - 我在我的一个模型上实现了它,现在 hasMany 孩子没有加载。

我曾希望 Auth::user() 向我提供登录的用户信息,但 I can't do Entrust hasRole 提供给我,所以除非我使用 Auth::user() 从模型加载用户,否则它无法使用。

【问题讨论】:

标签: authentication laravel model laravel-5


【解决方案1】:

虽然它导致我的登录出现问题,但我发现如果我在 config/auth.php 中更改我的模型

'model' => 'App\User',

'model' => 'App\Models\User',

我可以使用 Auth::user()->hasRole('admin')。现在,如果我能弄清楚为什么这样做会导致我在身份验证时出现此错误:

ErrorException in EloquentUserProvider.php line 106:
Argument 1 passed to Illuminate\Auth\EloquentUserProvider::validateCredentials() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\Models\User given, called in /Users/dylanglockler/Sites/laravel-lovelaundry-5/vendor/laravel/framework/src/Illuminate/Auth/Guard.php on line 383 and defined

【讨论】:

  • 您的角色是否设置在数据库中?您应该传递Authenticatable 的实例。也许$user = Auth::user(); $user->hasRole('admin')?我需要更多代码来确定这里出了什么问题。
猜你喜欢
  • 1970-01-01
  • 2017-09-03
  • 2011-01-19
  • 1970-01-01
  • 2017-07-05
  • 1970-01-01
  • 2015-04-10
  • 2020-02-08
相关资源
最近更新 更多