拉拉维尔 - 身份验证,未记录路由



登录成功后路由调用控制器的方法时出现问题。
在新方法中,用户似乎没有被记录。 我不明白为什么。

步骤是:登录方式

Route::post('login', 'UserController@login')->name('login');

然后检查用户是否登录:

Route::get('check-login', 'UserController@checklogged');

控制器是这个:

<?php
namespace AppHttpControllers;
use AppModelsUser;
use IlluminateHttpRequest;
use IlluminateSupportFacadesAuth;
use IlluminateSupportFacadesValidator;
use IlluminateFoundationAuthAuthenticatesUsers;
use FakerGenerator as Faker;
class UserController extends Controller
{
// regole per FormValidator
protected $rulesLogin = [
'email' => 'bail|required|email',
'password' => 'required',
];

// Effettuo il login
/**
*  Method: POST
* @Parameters: email, password
* return: Authenticated User.
*/
public function login(Request $request)
{
//dd($request->all());
$validator = Validator::make($request->all(),$this->rulesLogin);
// login fallito
if ($validator->failed()) {
return response([
'status' => 'ko',
'message' => $validator->errors()->first(),
], 422);
}
// login errato
if (!Auth::attempt([
'email' => $request->email,
'password' => $request->password,
'status' => ['active'],
])) {
return response(
[
'status' => 'ko',
'message' => 'Invalid email or password',
], 422);
}
return (Auth::user());
}
public function checklogged()
{
return dd(Auth::id());
}

checklogged(( 返回总是假的。我希望它返回用户登录的ID

我认为问题是你没有在路由中使用网络中间体。如果您遵循 HMVC 模式,请确保使用这样的 Web 中间件。

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

或者请检查您的路由服务提供商.php文件天气它在mapWebRoutes((函数中有Web中间件

protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
}

问题是中间件作为来宾。

Route::post('login', 'UserController@login')->name('login')->middleware('guest');

试试这个 sintaxe:

public function checklogged()
{
return dd(Auth::user()->id);
}

最新更新