2017-04-15 112 views
1

我試圖在我的Lumen應用程序中啓用基本的用戶身份驗證(用戶名,密碼)。流明中的用戶身份驗證

app.php - 以下已被取消註釋中的指示https://lumen.laravel.com/docs/5.4/authentication

$app->withFacades(); 
$app->routeMiddleware([ 
    'auth' => App\Http\Middleware\Authenticate::class, 
]); 
    $app->register(App\Providers\AuthServiceProvider::class); 

我的路線是這樣的:

$app->post('auth/register', ['uses' => 'Auth\[email protected]']); 

控制器看起來是這樣的:

namespace App\Http\Controllers\Auth; 

use App\Http\Controllers\Controller; 
use App\Repositories\UserRepository; 
use Illuminate\Http\Request; 
use Auth; 
use App\User; 
class AuthController extends Controller { 

/** 
* Create a new authentication controller instance. 
* 
* @return void 
*/ 
public function __construct() 
{ 

} 

public function postRegister(Request $request, UserRepository $userRepository) 
{ 
    $this->validate($request, [ 
     'name' => 'required|max:255', 
     'email' => 'required|email|max:255|unique:users', 
     'password' => 'required|confirmed|min:6', 
    ]); 

    $user = $userRepository->store($request); 

    Auth::login($user); 

    return ['result' => 'success']; 
} 
} 

我已經得到了奇怪和奇妙的錯誤組合,目前我得到:

ReflectionException in BoundMethod.php line 155: 
Class App\Repositories\UserRepository does not exist 

我做了一些谷歌的廣泛搜索,似乎沒有要在流明用戶身份驗證的許多記載的用途,以便尋找一個指針,以我在這裏錯過了。

+0

您需要縮小問題範圍。所以'UserRepository'類沒有被服務容器解析?仔細檢查你是否沒有在課程名稱或路徑中出現任何錯誤。 – AlexM

回答

0

我最初的錯誤使雄辯是我一​​直在尋找的日誌記錄在用戶的方法,我應該一直在尋找的是認證。什麼我確實需要實現我思考想出了以下功能:

  1. 創建用戶
  2. 刪除用戶
  3. 驗證用戶

考慮到這一點我結束了類似如下:

<?php 
namespace App\Http\Controllers\Auth; 
use App\User; 
use App\Http\Controllers\Controller; 
use Illuminate\Http\Request; 
//Required to hash the password 
use Illuminate\Support\Facades\Hash; 

class AuthController extends Controller { 
    /** 
    * Create a new authentication controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 

    } 

    public function validateRequest(Request $request) { 
     $rules = [ 
      'email' => 'required|email|unique:users', 
      'password' => 'required|min:6' 
     ]; 
     $this->validate($request, $rules); 
    } 


    //Get the input and create a user 
    public function store(Request $request) { 
     $this->validateRequest($request); 
     $user = User::create([ 
      'email' => $request->get('email'), 
      'password'=> Hash::make($request->get('password')) 
     ]); 
     return response()->json(['status' => "success", "user_id" => $user->id], 201); 
    } 


    //delete the user 
    public function destroy($id) { 
      $user = User::find($id); 
      if(!$user){ 
       return response()->json(['message' => "The user with {$id} doesn't exist"], 404); 
      } 
      $user->delete(); 
      return response()->json(['data' => "The user with with id {$id} has been deleted"], 200); 
     } 


    //Authenticate the user 
    public function verify(Request $request) { 
     $email = $request->get('email'); 
     $password = $request->get('password'); 
     $user = User::where('email', $email)->first(); 
     if($user && Hash::check($password, $user->password)) { 
     return response()->json($user, 200); 
     } 
     return response()->json(['message' => "User details incorrect"], 404); 
    } 


    //Return the user 
    public function show($id) { 
     $user = User::find($id); 
     if(!$user) { 
     return response()->json(['status' => "invalid", "message" => "The userid {$id} does not exist"], 404); 
     } 
     return response()->json(['status' => "success", 'data' => $user], 200); 
    } 

    //Update the password 
    public function update(Request $request, $id) { 
     $user = User::find($id); 
     if(!$user){ 
      return response()->json(['message' => "The user with {$id} doesn't exist"], 404); 
     } 
     $this->validateRequest($request); 
     $user->email  = $request->get('email'); 
     $user->password  = Hash::make($request->get('password')); 
     $user->save(); 
     return response()->json(['data' => "The user with with id {$user->id} has been updated"], 200); 
    } 

} 
0

我不確定你想用UserRepository和Auth實現什麼。流明是一個無狀態的框架,這意味着Auth::login()永遠不會有任何影響。另外,就我而言,UserRepository是Laravel的事情。不是流明的事情。

創建用戶App\User::create($request->all())並通過Eloquent模型訪問它。您可以在這個問題bootstrap/app.php