Laravel 5.6:Auth::check()在Auth::登录成功后直接失败



我使用的是Laravel的5.6版本。

我尝试手动编写一个登录控制器,成功后会返回到仪表板,失败后会返回登录。

问题是当我尝试登录时,MainController会一直重定向回登录。因此,我通过检查登录后Auth::check是否正常工作来检查用户是否在登录控制器中正确登录,并发现它失败了,这使得用户似乎出于某种原因没有正确登录,即使我没有收到任何错误消息。

我找了几个小时,尝试了很多方法来解决这个问题,但都没有成功。所以我希望有人能给我一个如何解决这个问题的指针。

我的设置如下:

web.php

<?php
Route::get('/', 'MainController')->name('dashboard');
Route::get('/login', 'LoginController')->name('login');
Route::post('/login/authenticate', 'LoginController@authenticate')->name('authenticate');

MainController.php

<?php
namespace AppHttpControllers;
use AppUser;
use AppHttpControllersController;
class MainController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function __invoke()
{
return view('maintenance');
}
}

登录控制器

<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesAuth;
use AppUser;
class LoginController extends Controller
{
$user = User::where('userid', $request->input('username'))
->where('user_pass', $request->input('password'))
->where('state', 0)
->first();
if($user) {
Auth::login($user);
if (Auth::check()) {
dd('Auth::check() failed');
}
//return redirect()->route('dashboard');
} else {
return redirect()->back()->withInput();
}
}
}

User.php

<?php
namespace App;
use IlluminateNotificationsNotifiable;
use IlluminateFoundationAuthUser as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
protected $primaryKey = 'account_id';
protected $table = 'login';
public $timestamps = false;
}
if (Auth::check()) {
dd('Auth::check() failed');
}

Auth::check()返回true时,用户已登录。所以换一种方式,就像它在你的代码中一样。例如:

if (!Auth::check()) {
dd('Auth::check() failed');
}

您可以尝试以下代码:

if (Hash::check('plain-text', $hashedPassword)) {
// The passwords match...
}

试着像那样使用

public function store() 
{
$credentials = array('user_displayname'=>Input::get('user_displayname'),
'user_password'=> Input::get('user_password'));
if (Auth::attempt($credentials))
{
return Auth::user();
}
return 'not logged';
}

最新更新