我正在使用一个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令牌错误。