【发布时间】:2019-11-07 10:49:37
【问题描述】:
我有一个 ajax 函数,它调用 api.php(路由)上列出的控制器。
在这个控制器中,我试图创建一个用户的日志。因此,我需要将 id 用户存储在日志表中。但是,当我尝试访问 Auth::user() 的任何方法时,即使已登录,我也会收到异常“未经身份验证”。
我认为在ajax函数上发送一些头信息是一个失误。
有人可以帮帮我吗?
【问题讨论】:
标签: ajax laravel authentication
我有一个 ajax 函数,它调用 api.php(路由)上列出的控制器。
在这个控制器中,我试图创建一个用户的日志。因此,我需要将 id 用户存储在日志表中。但是,当我尝试访问 Auth::user() 的任何方法时,即使已登录,我也会收到异常“未经身份验证”。
我认为在ajax函数上发送一些头信息是一个失误。
有人可以帮帮我吗?
【问题讨论】:
标签: ajax laravel authentication
如果我是正确的,laravel 中的api.php 路由设置为使用令牌而不是会话。这意味着每次调用都需要传递一个令牌(在用户模型/记录上指定)。
在web.php 中使用Auth::user() 将起作用,因为它使用用户会话进行身份验证。
【讨论】:
<?php echo Auth::user() ?>
or {{Auth::user()->(id)}}
【讨论】:
Auth::user() 会触发异常 - 我看不出您的代码毕竟涵盖了这一点
你可以试试这个,
在您的 Kernel.php 文件中,将您自己的名称(如“sessions”)添加到 $middlewareGroups。它应该包含 \Illuminate\Session\Middleware\StartSession::class
将“会话”分配给您想要的那些路线。
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
],
'api' => [
'throttle:60,1',
],
'sessions' => [
\Illuminate\Session\Middleware\StartSession::class,
]
];
路由/api.php
Route::group(['middleware' => ['sessions']], function () {
Route::resource(...);
});
我认为它一定对你有用
【讨论】: