2016-05-19 7 views
1

Привет, я использую шаблон laravel, mongoDB и AdminLTE в моем проекте. для mongoDB я использую jenssegers/laravel-mongodb. Но теперь я столкнулся ошибку, когда я создания аутентификации для входа в контроллер Laravel это мой код в AuthController.phplaravel authentication и jenssegers-mongodb не работает

public function postLogin(Request $request) 
    { 
    $authUser = User::where('email', '=', $request->email)->first(); 
    if (isset($authUser)) { 
     if (Auth::attempt(['email' => $request->email, 'password' => $request->password])) { 
      echo "success";exit; 
     } else { 
      echo "fail";exit; 
     } 
    } else { 
     echo "fail";exit; 
    } 

В User.php код

<?php 

namespace App; 

use Jenssegers\Mongodb\Eloquent\Model as Eloquent; 
use DB; 

use Illuminate\Contracts\Auth\Authenticatable; 
use Illuminate\Auth\Authenticable as AuthenticableTrait; 



class User extends Eloquent implements Authenticatable 
{ 
    protected $connection = 'mongodb'; 
    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'name', 'email', 'password', 
    ]; 

    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 
} 

в User.php, если я использовать только красноречив, как class User extends Eloquent так получаю эту ошибку

Argument 1 passed to Illuminate\Auth\EloquentUserProvider::validateCredentials() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\User given, called in /var/www/html/cams_alphaV1/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php on line 378 and defined 

если я с помощью class User extends Eloquent implements Authenticatable так получаю эту ошибку

Class App\User contains 6 abstract methods and must therefore be declared abstract or implement the remaining methods (Illuminate\Contracts\Auth\Authenticatable::getAuthIdentifierName, Illuminate\Contracts\Auth\Authenticatable::getAuthIdentifier, Illuminate\Contracts\Auth\Authenticatable::getAuthPassword, ...) 

, пожалуйста, помогите мне, я полностью застрял.

ответ

4

Поскольку вы больше не используете модель Eloquent, ваша пользовательская модель MongoDB должна реализовать некоторые интерфейсы и использовать некоторые черты. Это для Laravel 5.2:

`use Jenssegers\Mongodb\Eloquent\Model as Eloquent; 
use Illuminate\Auth\Authenticatable; 
use Illuminate\Auth\Passwords\CanResetPassword; 
use Illuminate\Foundation\Auth\Access\Authorizable; 
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 
class User extends Eloquent implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract 
{ 
    use Authenticatable, Authorizable, CanResetPassword; 
}` 
+0

Большое спасибо @Steven, работающий нормально ... :) –