我使用的是Laravel5.2。
我在users
表中添加了一个名为username
的新字段,并将其包含在视图和AuthController.php
我还做了一个检查,看看用户是否将使用一个保留的slug作为他的用户名,如果是,我抛出一个错误,如果用户名是好的,我保存在数据库中。
我正在检查2个保留的段塞横幅
和图像
-这就是我保留的全部。
如果我取消检查,数据将正常保存在数据库中,包括保留的slug。所以我必须做检查。
然而,当我应用检查时,我得到了这个错误
SessionGuard.php第439行中的ErrorException:
传递给Illumb\Auth\SessionGuard::login()的参数1必须是Illumb\Contracts\Auth\Authenticatable的实例,给定字符串,在第63行的C:\xampp\htdocs\socialnet\vendor\laravel\framework\src\Illumb\Foundation\Auth\RegisterUsers.php中调用并定义
这是我修改后在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');
}
}
如果我在声明$check
变量并选择保留名称后dd($check)
,我会得到正确的响应。
array:2 [▼
"status" => "nok"
"message" => "This slug is on a list of reserved names"
]
这是因为您正在返回一个字符串,而该类需要Authenticatable的实例。
在中间件中移动验证是您的选择。创建一个中间件,用于检查用户名是否为“Slug”,并且只有在验证通过时才执行procede to Create()方法。否则,返回字符串:“用户名是保留名称”
现在,您可以通过删除strgcheck方法来清理AuthController,并且您可以始终确保每当调用create()方法时,该用户名都不是Slug。
你可以检查Laravel留档
传递给Illumate\Auth\EloquentUserProvider的参数1::validateCreentials()必须是Illumate\合同\Auth\身份验证的实例,应用程序\模型\用户给定的实例,在D:\xampp\htdocs\后端\电子商务\供应商\laravel\框架\src\Illumate\Auth\SessionG中uard.php第384行----我有这个问题请帮我
我在laravel上有一个注册和登录系统,没有电子邮件验证。今天,我想使用以下指南添加电子邮件验证:https://mailtrap.io/blog/laravel-email-verification/完成所有操作后,我尝试注册一个用户,但出现了错误“传递到App\Http\Controllers\Auth\RegisterController::validator()的参数1必须是在第32行的
我使用solcialite登录Laravel通过Gihub,但有问题登录。我得到一个错误:Symfony\组件\调试\异常\FatalThrowableError(E_RECOVERABLE_ERROR)类型错误:参数1传递给照明\Auth\SessionGuard::登录()必须实现接口照明\合同\Auth\身份验证,空给定,调用 /var/www/html/testio/vendor/lara
修改我的注册刀片。我添加了2个触发用户注册的附加功能。我需要的数据被保存到适当的表中,但是我有这个错误, Argument 1传递给Illumate\Auth\SessionGuard::登录()必须实现接口Illumate\合同\Auth\身份验证,布尔值给定,在第35行调用E:\wamp64\www\aftspirdit-appzcoder\供应商\laravel\框架\src\Illumat
我正在编写一个小型python游戏,我的一些代码似乎不起作用。看一看: 是啊......所以错误是:
你ser.php 尝试登录Laravel时出错。 错误: 传递给Illumb\Auth\EloquentUserProvider::validateCredentials()的参数1必须是Illumb\Contracts\Auth\Authenticatable的实例,App\User给定的实例,在F:\eStore\vendor\laravel\framework\src\Illumb\Auth