Laravel 5 Auth: try () всегда возвращает false

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

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' => 'AdminController@showDashboard'));

});

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

//Route for login
Route::get('admin/login','AdminAuth\AuthController@showLoginForm');
Route::post('admin/login','AdminAuth\AuthController@login');
Route::get('admin/logout','AdminAuth\AuthController@logout');

//Route for registration
Route::get('admin/ims-register', 'AdminAuth\AuthController@showRegistrationForm');
Route::post('admin/ims-register', 'AdminAuth\AuthController@register');

});

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 :: check. Это возвращает истину. Но когда я делаю это:

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

Это ложь

Пробовал проверять результаты на основе ответа от этого вопрос особенно # 7. Все тот же.

0

Решение

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

'OPassword' => $password

Я изменил это на

'password' => $password

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

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector