[英]laravel 5.2 multi auth not working
我正在尝试使用laravel 5.2多重身份验证,但无法正常工作。 我创建了2个卫兵admin
和mhs
。 但是我无法使用mhs
Guard登录。 当我尝试使用mhsguard登录时,它总是重定向到该登录表单。 我尝试遵循此如何在Laravel 5.2中使用多重身份验证
这是我的auth.php
逆天
'guards' => [
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
'mhs' => [
'driver' => 'session',
'provider' => 'mhs',
],
提供商
'providers' => [
'admin' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'mhs' => [
'driver' => 'eloquent',
'model' => App\Mahasiswa::class,
],
],
这是我的routes.php
Route::group(['middleware' => ['web']], function () {
Route::get('admin/login', 'LoginController@admingetLogin');
Route::post('admin/login', 'LoginController@adminLogin');
Route::get('/logout', 'LoginController@getLogout');
Route::get('mhs/login', 'LoginController@mhsgetLogin');
Route::post('mhs/login', 'LoginController@mhsLogin');
Route::get('/logout', 'LoginController@getLogout');
});
Route::group(['middleware' => ['auth']], function () {
Route::get('/home', 'MahasiswaController@index');
Route::get('/mhs', 'MahasiswaController@mhs');
Route::resource('mahasiswa', 'MahasiswaController');
});
这是我的LoginController
<?php
namespace App\Http\Controllers;
use Auth;
use App\User;
use App\Mahasiswa;
use Illuminate\Support\Facades\Input;
class LoginController extends Controller
{
protected $username = 'username';
public function admingetLogin()
{
return view('auth.login');
}
public function mhsgetLogin()
{
return view('mahasiswa.login');
}
public function adminLogin(){
$input = Input::all();
if(count($input) > 0){
$auth = auth()->guard('admin');
$credentials = [
'username' => $input['username'],
'password' => $input['password'],
];
if ($auth->attempt($credentials)) {
if(auth()->guard('admin')->check()){
auth()->guard('admin')->user()->toArray();
return redirect()->intended('/');
}
} else {
echo 'Error';
}
} else {
return view('auth.login');
}
}
public function mhsLogin(){
$input = Input::all();
if(count($input) > 0){
$auth = auth()->guard('mhs');
$credentials = [
'username' => $input['username'],
'password' => $input['password'],
];
if ($auth->attempt($credentials)) {
if(auth()->guard('mhs')->check()){
auth()->guard('mhs')->user()->toArray();
return redirect()->intended('/mhs');
}
} else {
echo 'Error';
}
} else {
return view('mhs.login');
}
}
public function profile(){
if(auth()->guard('admin')->check()){
pr(auth()->guard('admin')->user()->toArray());
return redirect()->intended('/');
}
if(auth()->guard('mhs')->check()){
pr(auth()->guard('mhs')->user()->toArray());
return redirect()->intended('/');
}
}
public function getLogout()
{
Auth::logout();
return redirect()->intended('/');
}
}
我在4天内坚持下去,有人可以帮我吗? 如果有人可以解决问题,这将非常有帮助。
您的警卫和提供者看起来不错。 首先,请在一个防护中检查您的auth
。 也许您对attempt
有attempt
。 使用Auth::attempt
作为默认防护。 您可以在此检查结果
public function validateCredentials(UserContract $user, array $credentials)
这在vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php
可能是密码检查有问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.