2017-01-04 3 views
4

Laravel 5.3のカスタム認証で問題に直面しています。Auth::check()をチェックすると、自分の関数やページを使用して、falseを返します。ここ はユーザコントローラである:laravelでカスタム認証を作成する方法

namespace App\Http\Controllers; 
      use App\User; 
      use Illuminate\Support\Facades\Session; 
      use validatior; 
      use Auth; 
      use Illuminate\Http\Request; 
     class UserController extends Controller 
     { 
    public function postSignUp(Request $request) 
     { 
      $validation = \Validator::make($request->all(), [ 
       'email' => 'email|required|unique:users', 
       'password' => 'required|min:4' 
      ]); 
      if ($validation->fails()) { 
       return redirect()->back()->withErrors($validation->errors()); 
      } else { 
       $user = new User(); 
       $user->email = $request->get("email"); 
       $user->password = bcrypt($request->get['password']); 
       $user->save(); 
      } 
      return redirect('signupPage'); 
     } 
public function postSignIn(Request $request) 
    { 
     $this->validate($request, [ 
      'email' => 'required', 
      'password' => 'required', 

     ]); 
     if (Auth::attempt(['email' => $request['email'], 'password' => $request['password']])) { 
      return redirect('users/profile'); 
     } 
     dd(Auth::check()); 
     exit; 

    } 
    } 

記号の後、私はプロフィールページにリダイレクトしたいが、私の条件が機能していませんで。私のルートは:

Route::group(['prefix' => 'users'], function(){ 
     Route::group(['middleware' => 'guest'], function(){ 
      Route::get('/signupPage','[email protected]'); 
      Route::post('/register',array ('as'=>'signup', 'uses' =>'[email protected]',)); 
      Route::get('signInPage', array('as' => 'signInPage', 'uses' => '[email protected]')); 
      Route::post('/postLogin', array('as' => 'postLogin', 'uses' => '[email protected]')); 
     }); 

     Route::group(['middleware' => 'auth'], function(){ 
      Route::get('/profile', array('as' => 'profile', 'uses' => '[email protected]')); 
      Route::get('/logout', array('as'=>'logout', 'uses'=> '[email protected]')); 

     }); 

    }); 

私を案内してください。ここで

答えて

1

は、ユーザーの登録中に、この機能はデフォルトでAuthAttempt機能で使用されるようにコードのいくつかの変更

 
    public function postSignUp(Request $request) 
    { 
     $email = $request->input('email'); 
     $pass = $request->input('password'); 
     $validation = \Validator::make($request->all(), [ 
      'email' => 'email|required|unique:users', 
      'password' => 'required|min:4' 
     ]); 
     if ($validation->fails()) { 
      return redirect()->back()->withErrors($validation->errors()); 
     } else { 
      $pas = bcrypt($pass); 
      $user = new User(); 
      $user->email = $email; 
      $user->password = $pas; 
      $user->save(); 
     } 

     return redirect('users/signInPage'); 
    } 

は最終的に、これはあなたにあまりにも多くを与える

 
public function postSignIn(Request $request) 
    { 
     $this->validate($request, [ 
      'email' => 'required', 
      'password' => 'required', 

     ]); 
     $email= $request->input['email']; 
     $password= $request->input['password']; 
     if (Auth::attempt(['email'=>$email,'password'=>$password'])) 
     { 
      return redirect('users/profile'); 
     } 

     return redirect('users/signInPage')->withErrors(['failure' => 'The credentials you entered did not match our records. Try again!',]); 
    } 

bcryptの使用くださいますこれはデフォルトのミドルウェアを使用しているときと同じようにエラーをリダイレクトします。これは、カスタムミドルウェアを作成する必要があるデフォルトのロジックと現在のロジックが異なるためです。このコマンドを実行するには、 php artisan make:middleware CutomAuth これは、カスタムミドルウェアをロジックで作成し、app/Http/Kernel.phpに登録した後\ 'customauth' => \Illuminate\Auth\Middleware\CutomAuth::class,と表示されます。

関連する問題