Laravel Auth::页面重新加载后登录"expires"



我已经实现了一个;自定义";我们的应用程序的登录设置,因为我们正在使用来自我们的代理的X-Forwarded-User(NB-在我们走上该路线之前的内部低安全性应用程序!(

不幸的是,似乎每次我们加载页面时,用户实际上都没有登录。我一进行Auth::登录,他们就登录了,但一旦页面重新加载,我进行Auth::用户检查,他们就没有登录。

正如你在这里看到的,这是通过中间件运行的,所以它在每个请求上都运行,但我有点困惑,为什么每次加载页面时我都必须登录,而用户不是";真的";正在登录。

<?php
namespace AppHttpMiddleware;
use AppUser;
use Closure;
use IlluminateSupportFacadesAuth;
class ValidateForwardedUser
{
/**
* Handle an incoming request.
*
* @param  IlluminateHttpRequest  $request
* @param  Closure  $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->header('X-Forwarded-User')) {
$forwardedUser = $request->header('X-Forwarded-User');
// This is always empty
print_r("Logged in user before auth = ".Auth::user()."<br>");
if (!Auth::check() || Auth::user() != $forwardedUser) {
if (User::where('email', '=', $forwardedUser)->first()) {
$user = User::where('email', '=', $forwardedUser)->first();
Auth::login($user);
} else {
$user = new User();
$user->email = $forwardedUser;
$user->save();
Auth::login($user);
}
} else {
// We should never hit this, but we throw an exception so it's debugable if we do!
throw new Exception('ValidateForwardedUser Exception #1');
}
// This is always populated
print_r("Logged in user before auth = ".Auth::user()."<br>");
return $next($request);
} else {
// We should never hit this, but we throw an exception so it's debugable if we do!
throw new Exception('ValidateForwardedUser Exception #2');
}
}
}

所有路由都使用";web";中间件,如下所示(特别是这里的问题似乎是ValidateForwardedUser(

protected $middlewareGroups = [
'web' => [
AppHttpMiddlewareEncryptCookies::class,
IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
IlluminateSessionMiddlewareStartSession::class,
// IlluminateSessionMiddlewareAuthenticateSession::class,
AppHttpMiddlewareValidateForwardedUser::class,
IlluminateViewMiddlewareShareErrorsFromSession::class,
AppHttpMiddlewareVerifyCsrfToken::class,
IlluminateRoutingMiddlewareSubstituteBindings::class,
AppHttpMiddlewareBrowserFilter::class,
],
'api' => [
'throttle:api',
IlluminateRoutingMiddlewareSubstituteBindings::class,
],
];

编辑:经过一些调试后,每次刷新页面都会创建一个新会话。这似乎不对,可能是问题的一部分?

虽然每次登录都能正常工作(但在页面重新加载之间不会持续(,但更新我的用户模型路径解决了我的问题。

出于某种原因,我之前将我的用户模型更改为App\User。

将其移回App\Models\User(并更新所有相关参考资料(解决了我的问题。

最新更新