身份验证守卫('web')在 laravel 6.2 中不起作用



我正在使用一个UI正在更改的客户端项目。因此其Auth::guard('web'(在客户端服务器中工作。但是,当我尝试将该项目用于我的wamp服务器(localhost(时,它就不起作用了。它不会返回登录用户数据,而是将数据返回到LoginControl中。整个代码都在客户端服务器(共享服务器(中工作。因此,当它的控制器发生变化时,它就不会返回数据。那是在我不再面对这个问题之前。我在谷歌上搜索,做了很多修改来解决这个问题,但没有得到我的解决方案。我的laravel版本是6.2。所以我来到这里。请不要否决投票。。。

请帮忙。

auth.php

'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
.....
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => AppUser::class,
],

route.php

Route::get('/','IndexController@index');  // here i am calling auth guard .
Route::get('',['as'=>'posts','uses'=>'IndexController@index']); 

LoginController.php

public function login(Request $request)
{
$this->validate($request, [
'login'    => 'required',
'password' => 'required',
]);
$login_type = filter_var($request->input('login'), FILTER_VALIDATE_EMAIL ) 
? 'email' 
: 'username';
$request->merge([
$login_type => $request->input('login')
]);
if (Auth::attempt($request->only($login_type, 'password'))) {

$request->session()->regenerate();
$previous_session = Auth::User()->session_id;
if ($previous_session) {
Session::getHandler()->destroy($previous_session);
}
Auth::user()->session_id = Session::getId();
Auth::user()->save();

$user = auth()->guard('web')->user();
$this->clearLoginAttempts($request);

return response()->json([
'status'        => 'S',
'message' => 'Login Successfuly.'
], 201);
}
return response()->json([
'status'        => 'F',
'message' => 'Unauthorized - Password Not matched.'
], 401);

}

IndexController

# for Test login 
if(  Auth::guard('web')->user())
{
return Auth::guard('web')->user();
}

我在朋友的帮助下解决了我的问题
env文件中存在问题。

APP_URL=localhost 

因此,基本逻辑是,您必须运行php-artisan-serve,这将为您提供localhost。因此,之后您将能够获得Auth数据。

因此,当您面临Auth::user((的null时,请在env文件中检查APP_URL

错误的APP_URL将给您CSRF令牌错误。

相关内容

  • 没有找到相关文章

最新更新