拉拉维尔会话/身份验证在更新后中断 - 拉拉维尔 6



我最近将Laravel和依赖项从5.7更新到6.0,并且用户登录Laravel并且会话在整个应用程序中持续存在时遇到问题。

我可以使用 手动登录用户

Auth()->loginUsingId(theID)在我尝试访问用户数据的控制器中,但用户未在整个应用程序中登录。我想知道我的会话是否完全损坏,或者它是否与中间件有关。我正在通过Laravel使用标准文件系统方法进行会话存储。

我在中间件中没有我的路由,因为我希望我的 API 路由打开并处理控制器内的权限。

这可能与某些配置问题有关,但我似乎找不到它。我也尝试了Laravel 6的全新下载并将我的代码添加到其中,但问题仍然存在。

没有发布太多代码,因为idk是最相关的,但如果有用的话可以。

内核.php:

namespace AppHttp;
use IlluminateFoundationHttpKernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
AppHttpMiddlewareTrustProxies::class,
AppHttpMiddlewareCheckForMaintenanceMode::class,
IlluminateFoundationHttpMiddlewareValidatePostSize::class,
AppHttpMiddlewareTrimStrings::class,
IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
AppHttpMiddlewareEncryptCookies::class,
IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
IlluminateSessionMiddlewareStartSession::class,
// IlluminateSessionMiddlewareAuthenticateSession::class,
IlluminateViewMiddlewareShareErrorsFromSession::class,
AppHttpMiddlewareVerifyCsrfToken::class,
IlluminateRoutingMiddlewareSubstituteBindings::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => AppHttpMiddlewareAuthenticate::class,
'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
'bindings' => IlluminateRoutingMiddlewareSubstituteBindings::class,
'cache.headers' => IlluminateHttpMiddlewareSetCacheHeaders::class,
'can' => IlluminateAuthMiddlewareAuthorize::class,
'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
'signed' => IlluminateRoutingMiddlewareValidateSignature::class,
'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class,
];
/**
* The priority-sorted list of middleware.
*
* This forces non-global middleware to always be in the given order.
*
* @var array
*/
protected $middlewarePriority = [
IlluminateSessionMiddlewareStartSession::class,
IlluminateViewMiddlewareShareErrorsFromSession::class,
AppHttpMiddlewareAuthenticate::class,
IlluminateRoutingMiddlewareThrottleRequests::class,
IlluminateSessionMiddlewareAuthenticateSession::class,
IlluminateRoutingMiddlewareSubstituteBindings::class,
IlluminateAuthMiddlewareAuthorize::class,
];

我遇到了同样的问题,认为它与Laravel 6有关。对我来说,事实证明,我对我的用户表使用了非标准主键,并且需要在用户模型上声明它。

对于会话故障排除,请记住,对配置/会话的更改.php擦除当前会话。我发现在测试之间运行php artisan config:clearphp artisan cache:clear很有帮助。

所以我最终发现的是这样的:

我有一个用于我所有 api 路由的 api.php 文件。在大多数情况下,我为每个特定于域的路由(例如,api/user.php(都有单独的文件,并将这些文件包含在主 api .php 文件中。

其中一个域路由模式是"api/settings"。当我将我的设置路由移动到他们自己的文件中并将其包含在 api.php 中时,这就是破坏一切的原因。我不知道为什么,但是将各个路由放回 api 中.php(而不是使用单独的文件包含(解决了这个问题。我想这是与拉拉维尔的某种路由冲突。不知道。那个花了我一段时间。

最新更新