2017-02-19 10 views
0

Я пытаюсь создать пользовательский логин с несколькими auth. Тем временем я пытаюсь сделать логин для администратора. Когда администратор входит в систему, функция входа в систему обрабатывает его (он также просто обновляется без функции входа) Auth:attempt(), кажется, всегда возвращает false, однако (у меня есть другое имя таблицы и поля). Кроме того, я могу свободно получить доступ к панели, просто изменив URL, даже если пользователь на самом деле не вошли в систему.Laravel 5 Auth: попытка() всегда возвращает false

AuthController

/* 
    |-------------------------------------------------------------------------- 
    | Registration & Login Controller 
    |-------------------------------------------------------------------------- 
    | 
    | This controller handles the registration of new users, as well as the 
    | authentication of existing users. By default, this controller uses 
    | a simple trait to add these behaviors. Why don't you explore it? 
    | 
    */ 

    use AuthenticatesAndRegistersUsers, ThrottlesLogins; 

    /** 
    * Where to redirect users after login/registration. 
    * 
    * @var string 
    */ 
    protected $redirectTo = 'admin/dashboard'; 

    /** 
    * Where to redirect users after logout. 
    * 
    * @var string 
    */ 
    protected $redirectAfterLogout = 'admin/login'; 

    /** 
    * Guard for admin 
    * 
    * 
    */ 
    protected $guard = 'admin'; 

    /** 
    * Create a new authentication controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware($this->guestMiddleware(), ['except' => 'logout']); 
    } 

    /** 
    * Get a validator for an incoming registration request. 
    * 
    * @param array $data 
    * @return \Illuminate\Contracts\Validation\Validator 
    */ 

    protected function validator(array $data) 
    { 
     return Validator::make($data, [ 
      'OUsername' => 'required|max:255|unique:users', 
      'OPassword' => 'required|min:6|confirmed', 
     ]); 
    } 

    /** 
    * Create a new user instance after a valid registration. 
    * 
    * @param array $data 
    * @return User 
    */ 
    protected function create(array $data) 
    { 
     return Admin::create([ 
      'OUsername' => $data['OUsername'], 
      'OPassword' => bcrypt($data['OPassword']), 
     ]); 
    } 

    /** 
    * Show login form. 
    * 
    * 
    * 
    */ 

    public function showLoginForm() 
    { 
     if (view()->exists('auth.authenticate')) { 
      return view('auth.authenticate'); 
     } 

     return view('pages.admin.login'); 
    } 

    /** 
    * Show registration form. 
    * 
    * 
    * 
    */ 

    public function showRegistrationForm() 
    { 
     return view('pages.admin.register'); 
    } 


    public function login(Request $request) 
    { 
     //Get inputs 
     $username = $request->input('username'); 
     $password = $request->input('password'); 

     //Redirect accordingly  
     if (Auth::guard('admin')->attempt(array('OUsername' => $username, 'OPassword' => $password))) 
     { 
      return redirect()->intended('admin/dashboard'); 
     } 

     else 
     { 
      //when echoing something here it is always displayed thus admin login is just refreshed. 
      return redirect('admin/login')->withInput()->with('message', 'Login Failed'); 
     } 
    } 

Администратор поставщика Модель

/** 
    * The database table used by the model. 
    * 
    * @var string 
    */ 
    protected $table = 'account_officer_t'; 


    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'OUsername', 'OPassword', 
    ]; 

    public $timestamps = false; 

    /** 
    * Set primary key 
    * 
    * @var int 
    */ 
    protected $primaryKey = 'AccountOfficerID'; 

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

    public function getAuthPassword() 
    { 
     return $this->OPassword; 
    } 

Маршруты

/* 
    |-------------------------------------------------------------------------- 
    | Application Routes 
    |-------------------------------------------------------------------------- 
    | 
    | Here is where you can register all of the routes for an application. 
    | It's a breeze. Simply tell Laravel the URIs it should respond to 
    | and give it the controller to call when that URI is requested. 
    | 
    */ 

    Route::group(['namespace' => 'Admin', 'middleware' => 'guest'], function(){ 
//This uses the guest middleware with the class name RedirectIfAuthenticated 
     Route::auth(); 

     //Route for admin dashboard view 
     Route::get('admin/dashboard', array('as' => 'dashboard', 'uses' => '[email protected]')); 

    }); 

    Route::group(['middleware' => ['web']], function() { 

     //Route for login 
     Route::get('admin/login','AdminAuth\[email protected]'); 
     Route::post('admin/login','AdminAuth\[email protected]'); 
     Route::get('admin/logout','AdminAuth\[email protected]'); 

     //Route for registration 
     Route::get('admin/ims-register', 'AdminAuth\[email protected]'); 
     Route::post('admin/ims-register', 'AdminAuth\[email protected]'); 

    }); 

RedirectIfAuthenticated (гостевое промежуточное ПО)

/** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @param string|null $guard 
    * @return mixed 
    */ 
    public function handle($request, Closure $next, $guard = null) 
    { 
     if (Auth::guard('admin')->check()) {   
      return redirect('admin/dashboard'); 
     } 

     if (Auth::guard($guard)->check()) {   
      return redirect('/'); 
     } 

     return $next($request); 
    } 

Я только что начал изучать структуру MVC и начал использовать Laravel. Спасибо вам за помощь.

Примечание

Моих паролей хранятся с использованием Bcrypt() с длиной столбца 255

Я попытался проверить, если хэш из таблицы соответствует моему входу с помощью Hash :: проверить. Он возвращает true. Но когда я это делаю:

dd(Auth::guard('admin')->attempt(array('OUsername' => $username, 'OPassword' => $password))); 

Это неверно.

Пробная проверка результатов на основе ответа от этого question особенно # 7. Тем не менее.

+0

[Как использовать мульти Auth в Laravel 5,2] (http://stackoverflow.com/questions/34490600/how-to-use-multi-auth-in-laravel -5-2) Проверьте этот ответ. Это работает для меня. –

+0

@ МаксимСтепанов Решает проблемы с панелью приборов, но не с логином. –

ответ

0

Проблема, кажется, с этой линией

'OPassword' => $password 

Я изменил его

'password' => $password 

Он должен быть пароль не OPassword. А потом в моей администратора модели я указал

public function getAuthPassword() 
{ 
    return $this->OPassword; 
} 
Смежные вопросы