2016-05-19 35 views
1

こんにちは私は私のプロジェクトでlaravel、mongoDBとAdminLTEテンプレートを使用しています。 mongoDBの場合はjenssegers/laravel-mongodbを使用しています。私はlaravelコントローラにAuthController.phplaravel認証とjenssegers-mongodbが動作しない

User.phpで
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', 
    ]; 
} 

で、この私のコードをログイン認証を作成するとき、私は唯一の雄弁などを使用している場合しかし、今、私はエラーに直面していますclass User extends Eloquent私はそう

0123このエラーを取得 class User extends Eloquent implements Authenticatableを使用している場合ので、

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 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

ありがとうございます@スティーブンはうまく働いています:) –

関連する問題