传递给SessionGuard :: login()的参数1必须是Laravel 5.2中的Auth \ Authenticatable实例

时间:2016-07-15 20:17:47

标签: php laravel laravel-5 laravel-5.2

我正在使用Laravel 5.2。

我在名为users的{​​{1}}表格中添加了一个新字段,并将其添加到视图中username

我也在检查用户是否要使用保留slug作为他的用户名,如果是,我抛出错误,如果用户名好,我保存在数据库中。

我正在检查2个预留的slu {AuthController.phpbanner - 这是我保留的所有内容。

如果我删除了检查,数据会正常保存在数据库中,包括保留的slugs。所以我必须做检查。

但是,当我应用支票时,我收到此错误

  

SessionGuard.php第439行中的ErrorException:

     

传递给Illuminate \ Auth \ SessionGuard :: login()的参数1必须是Illuminate \ Contracts \ Auth \ Authenticatable的实例,给定字符串,在C:\ xampp \ htdocs \ socialnet \ vendor \ laravel \ framework \中调用src \ Illuminate \ Foundation \ Auth \ RegistersUsers.php在第63行并定义了

这是我在修改后的image中的代码

AuthController

如果我在声明protected function validator(array $data) { return Validator::make($data, [ 'name' => 'required|max:255', 'email' => 'required|email|max:255|unique:users', 'password' => 'required|min:6|confirmed', 'username' => 'required|alpha_num|unique:users,username', ]); } protected function create(array $data) { $check = $this->slugCheck($data['username']); if($check['status'] == 'nok') { return 'this username is a reserved name'; } else { return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => bcrypt($data['password']), 'username' => $data['username'], ]); } } public function slugCheck($slug){ $slug = strtolower($slug); // is the slug in the banned words list // if(array_search($slug, array('','banner','image'))){ return array('status' => 'nok', 'message' => 'This slug is on a list of reserved names'); } $user = User::where('username', '=', $slug)->first(); if($user){ return array('status' => 'nok', 'message' => 'This slug is already taken'); } else { return array('status' => 'ok', 'message' => 'Slug is unique'); } } 变量并选择保留名称后dd($check),我会得到正确的答案。

$check

1 个答案:

答案 0 :(得分:2)

这是因为您正在返回一个字符串,而该类正在期待Authenticatable的一个实例。

您可以选择在中间件中移动验证。创建一个中间件,检查用户名是否是一个' Slug'并且只有在验证通过时才进入create()方法,否则返回字符串:'用户名是保留名称'

现在你可以通过删除slugCheck方法来清理AuthController,并且你总是可以确定每当调用create()方法时,该用户名都不是Slug。

您可以查看laravel文档