首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用会话问题的Laravel: Auth::id()为null

使用会话问题的Laravel: Auth::id()为null
EN

Stack Overflow用户
提问于 2021-03-25 16:05:49
回答 2查看 693关注 0票数 1

我们试图访问当前日志用户的id,我们以这样的方式修改了auth.php文件:

代码语言:javascript
运行
复制
'api' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

在此之后,我们还开发了Kernel.php文件:

代码语言:javascript
运行
复制
'api' => [
            'throttle:60,1',
            'bindings',
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

在我们的api.php公路上,我们有:

代码语言:javascript
运行
复制
Auth::routes();

Route::middleware('api')->group(function(){

Route::post('/tipo', [App\Http\Controllers\ApiController::class, 'createtipo']);
Route::post('/corso', [App\Http\Controllers\ApiController::class, 'createcorso']);
Route::get('/mostracorsi', [App\Http\Controllers\ApiController::class, 'mostracorsi']);
Route::get('/mostracorso/{idCorso}', [App\Http\Controllers\ApiController::class, 'mostracorso']);
Route::put('/updatecorso/{idCorso}', [App\Http\Controllers\ApiController::class, 'updatecorso']);
Route::delete('/deletecorso/{idCorso}', [App\Http\Controllers\ApiController::class, 'deletecorso']);


Route::post('/iscrizione', [App\Http\Controllers\ApiController::class, 'iscrizione']);
Route::get('/vedicorso/{idCorso}', [App\Http\Controllers\ApiController::class, 'vedicorso']);
Route::delete('/deleteiscrizione/{idUtente}', [App\Http\Controllers\ApiController::class, 'deleteiscrizione']);


Auth::routes();

}));

在我们的主计长中,我们有:

代码语言:javascript
运行
复制
public function createcorso(Request $request)
{

    $corsoscii = new CorsoScii();
    $admin_id = new AdminController();

    $corsoscii->tipo = $request->input('tipo');
    $corsoscii->nome = $request->input('nome');
    $corsoscii->membriMax = $request->input('membriMax');
    $corsoscii->orario_inizio = $request->input('orario_inizio');
    $corsoscii->orario_fine = $request->input('orario_fine');
    $corsoscii->inizio = $request->input('inizio');
    $corsoscii->fine = $request->input('fine');

    $corsoscii->save();

    $idUtente = Auth::id();
    $idCorso = CorsoScii::latest()->first();
    DB::table('iscrizione')->insert(
        array('idUtente' => $idUtente, 'idCorso' => $idCorso)
    );
    return response()->json($corsoscii);
}

之所以选择这种方式,是因为每次在控制器上传递当前用户id时,它总是为null:

SQLSTATE23000:完整性约束违反: 1048列'idUtente‘不能为null

当我们再次尝试执行ajax调用时,它会在浏览器控制台中给出以下错误:

找不到

绑定异常目标类

如果可能是一个有用的信息,我们也有路线列表,我们试图了解什么是错误的,在这里:

代码语言:javascript
运行
复制
+--------+----------+---------------------------------+------------------+------------------------------------------------------------------------+--------------------------------------------------+
| Domain | Method   | URI                             | Name             | Action                                                                 | Middleware                                       |
+--------+----------+---------------------------------+------------------+------------------------------------------------------------------------+--------------------------------------------------+
|        | GET|HEAD | /                               |                  | Closure                                                                | web                                              |
|        | GET|HEAD | admin                           | admin            | App\Http\Controllers\AdminController@index                             | web                                              |
|        |          |                                 |                  |                                                                        | Laratrust\Middleware\LaratrustRole:administrator |
|        | POST     | api/corso                       |                  | App\Http\Controllers\ApiController@createcorso                         | api                                              |
|        | DELETE   | api/deletecorso/{idCorso}       |                  | App\Http\Controllers\ApiController@deletecorso                         | api                                              |
|        | DELETE   | api/deleteiscrizione/{idUtente} |                  | App\Http\Controllers\ApiController@deleteiscrizione                    | api                                              |
|        | POST     | api/iscrizione                  |                  | App\Http\Controllers\ApiController@iscrizione                          | api                                              |
|        | POST     | api/login                       |                  | App\Http\Controllers\Auth\LoginController@login                        | api                                              |
|        |          |                                 |                  |                                                                        | guest                                            |
|        | GET|HEAD | api/login                       | login            | App\Http\Controllers\Auth\LoginController@showLoginForm                | api                                              |
|        |          |                                 |                  |                                                                        | guest                                            |
|        | POST     | api/logout                      | logout           | App\Http\Controllers\Auth\LoginController@logout                       | api                                              |
|        | GET|HEAD | api/mostracorsi                 |                  | App\Http\Controllers\ApiController@mostracorsi                         | api                                              |
|        | GET|HEAD | api/mostracorso/{idCorso}       |                  | App\Http\Controllers\ApiController@mostracorso                         | api                                              |
|        | POST     | api/password/confirm            |                  | App\Http\Controllers\Auth\ConfirmPasswordController@confirm            | api                                              |
|        |          |                                 |                  |                                                                        | auth                                             |
|        | GET|HEAD | api/password/confirm            | password.confirm | App\Http\Controllers\Auth\ConfirmPasswordController@showConfirmForm    | api                                              |
|        |          |                                 |                  |                                                                        | auth                                             |
|        | POST     | api/password/email              | password.email   | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail  | api                                              |
|        | POST     | api/password/reset              | password.update  | App\Http\Controllers\Auth\ResetPasswordController@reset                | api                                              |
|        | GET|HEAD | api/password/reset              | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | api                                              |
|        | GET|HEAD | api/password/reset/{token}      | password.reset   | App\Http\Controllers\Auth\ResetPasswordController@showResetForm        | api                                              |
|        | POST     | api/register                    |                  | App\Http\Controllers\Auth\RegisterController@register                  | api                                              |
|        |          |                                 |                  |                                                                        | guest                                            |
|        | GET|HEAD | api/register                    | register         | App\Http\Controllers\Auth\RegisterController@showRegistrationForm      | api                                              |
|        |          |                                 |                  |                                                                        | guest                                            |
|        | POST     | api/tipo                        |                  | App\Http\Controllers\ApiController@createtipo                          | api                                              |
|        | PUT      | api/updatecorso/{idCorso}       |                  | App\Http\Controllers\ApiController@updatecorso                         | api                                              |
|        | GET|HEAD | api/user                        |                  | Closure                                                                | api                                              |
|        |          |                                 |                  |                                                                        | auth:api                                         |
|        | GET|HEAD | api/vedicorso/{idCorso}         |                  | App\Http\Controllers\ApiController@vedicorso                           | api                                              |
|        | POST     | cancella/{id}                   | cancellautente   | App\Http\Controllers\ClienteController@delete                          | web                                              |
|        |          |                                 |                  |                                                                        | Laratrust\Middleware\LaratrustRole:user          |
|        | GET|HEAD | cliente                         | cliente          | App\Http\Controllers\ClienteController@index                           | web                                              |
|        |          |                                 |                  |                                                                        | Laratrust\Middleware\LaratrustRole:user          |
|        | POST     | login                           |                  | App\Http\Controllers\Auth\LoginController@login                        | web                                              |
|        |          |                                 |                  |                                                                        | guest                                            |
|        | GET|HEAD | login                           | login            | App\Http\Controllers\Auth\LoginController@showLoginForm                | web                                              |
|        |          |                                 |                  |                                                                        | guest                                            |
|        | POST     | logout                          | logout           | App\Http\Controllers\Auth\LoginController@logout                       | web                                              |
|        | GET|HEAD | password/confirm                | password.confirm | App\Http\Controllers\Auth\ConfirmPasswordController@showConfirmForm    | web                                              |
|        |          |                                 |                  |                                                                        | auth                                             |
|        | POST     | password/confirm                |                  | App\Http\Controllers\Auth\ConfirmPasswordController@confirm            | web                                              |
|        |          |                                 |                  |                                                                        | auth                                             |
|        | POST     | password/email                  | password.email   | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail  | web                                              |
|        | GET|HEAD | password/reset                  | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web                                              |
|        | POST     | password/reset                  | password.update  | App\Http\Controllers\Auth\ResetPasswordController@reset                | web                                              |
|        | GET|HEAD | password/reset/{token}          | password.reset   | App\Http\Controllers\Auth\ResetPasswordController@showResetForm        | web                                              |
|        | GET|HEAD | register                        | register         | App\Http\Controllers\Auth\RegisterController@showRegistrationForm      | web                                              |
|        |          |                                 |                  |                                                                        | guest                                            |
|        | POST     | register                        |                  | App\Http\Controllers\Auth\RegisterController@register                  | web                                              |
|        |          |                                 |                  |                                                                        | guest                                            |
+--------+----------+---------------------------------+------------------+------------------------------------------------------------------------+--------------------------------------------------+

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2021-03-25 16:09:42

您必须在您的auth:api中间件组中使用api

代码语言:javascript
运行
复制
    'api' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\Session\Middleware\AuthenticateSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
        'throttle:60,1',
        'auth:api',
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
    ],
票数 0
EN

Stack Overflow用户

发布于 2021-03-25 16:29:12

只需使用middleware('auth'),因为api.php中的每个路由都已分配给middleware('api')

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66803363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档