Hello Guys我是laravel的新手。当新用户注册身份验证我是这个错误消息。如何解决我的问题 身份验证失败,显示此错误消息。
Illuminate\Auth\SessionGuard::login() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\customer given.
我的控制器是
public function store(Request $request)
{
$user = new customer;
$user->name=Input::get('name');
$user->email=Input::get('email');
$user->password=Input::get('password');
$user->save();
Auth::login($user);
return redirect::home();
}
和我的路线
Route::get('register', 'testing@index');
Route::post('store', 'testing@store');
Route::get('login', 'testing@create');
Route::post('logout', 'testing@destroy');
我的注册页面是
<form action="store" method="post">
<label for="name">Name</label>
<input type="text" name="name" autocomplete="off">
<br>
<label for="email">Email</label>
<input type="text" name="email" autocomplete="off">
<br>
<label for="password">Password</label>
<input type="text" name="password" autocomplete="off">
<br>
<input type="hidden" name="_token" value="{{csrf_token()}}">
<br>
<input type="submit" name="submit" value="Submit">
</form>
请帮助我们如何注册,登录和注销完整认证。
谢谢你,欢迎你的建议。
答案 0 :(得分:1)
在不知道您的实际客户模型的情况下,我会尝试为您提供最佳匹配答案。
如果你是laravel的新手,最好的appraoch是使用
php artisan make:auth
创建:
这将使用默认的,已存在的App \ User模型为您完成。如果您不想使用默认的App \ User并希望使用App \ Customer进行身份验证,那么您至少需要使模型扩展为Authenticable
use Illuminate\Foundation\Auth\User as Authenticatable;
class Customer extends Authenticatable
{
...
}
如果没有这个,你肯定会收到给定的错误。但是,您仍需要确保您的客户模型上有必需的字段 - 如电子邮件,密码,记住令牌等。如果您不想使用这些字段,则需要在身份验证控制器中进一步调整。
如前所述,初学者的最佳方法是使用生成的身份验证。您可以在此处找到更多信息:https://laravel.com/docs/5.2/authentication
小心 - php artisan make:auth将创建一些视图,它将覆盖具有相同名称的现有视图。
e.g。
以及auth中的其他一些
查看代码,您只需尝试替换
$user = new customer;
与
$user = new User
和当然拉入用户模型
use App\User;