【问题标题】:Laravel 5.7 @csrf is not working after enabling HTTPS启用 HTTPS 后 Laravel 5.7 @csrf 无法正常工作
【发布时间】:2019-07-27 04:53:03
【问题描述】:

最初我的 laravel 应用程序使用 HTTP 协议,然后我将协议更改为 HTTPS。
不幸的是,我的应用程序的登录现在无法正常工作。它显示 419 错误,对不起,您的会话已过期。我尝试了几个建议的解决方案。
https://laracasts.com/discuss/channels/laravel/post-request-in-laravel-57-error-419-sorry-your-session-has-expired

Laravel 419 Error - VerifyCsrfToken issue

Post request in Laravel 5.7 --- Error - 419 Sorry, your session has expired

但是这些都没有解决我的问题。

我正在使用 CRUDBOOSTER 插件来管理登录。

Routes.php。

/* ROUTER FOR WEB */
Route::group(['middleware' => ['web'], 'prefix' => config('crudbooster.ADMIN_PATH'), 'namespace' => $namespace], function () {

    Route::post('unlock-screen', ['uses' => 'AdminController@postUnlockScreen', 'as' => 'postUnlockScreen']);
    Route::get('lock-screen', ['uses' => 'AdminController@getLockscreen', 'as' => 'getLockScreen']);
    Route::post('forgot', ['uses' => 'AdminController@postForgot', 'as' => 'postForgot']);
    Route::get('forgot', ['uses' => 'AdminController@getForgot', 'as' => 'getForgot']);
    Route::post('register', ['uses' => 'AdminController@postRegister', 'as' => 'postRegister']);
    Route::get('register', ['uses' => 'AdminController@getRegister', 'as' => 'getRegister']);
    Route::get('logout', ['uses' => 'AdminController@getLogout', 'as' => 'getLogout']);
    Route::post('login', ['uses' => 'AdminController@postLogin', 'as' => 'postLogin']);
    Route::get('login', ['uses' => 'AdminController@getLogin', 'as' => 'getLogin']);
});  

我的表格

 <form autocomplete='off' action="{{ route('postLogin') }}" method="post">
    @csrf
        <!-- <input type="hidden" name="_token" value="{{ csrf_token() }}"/> -->
        <div class="form-group has-feedback">
            <input autocomplete='off' type="text" class="form-control" name='email' required placeholder="Email"/>
            <span class="glyphicon glyphicon-user form-control-feedback"></span>
        </div>
        <div class="form-group has-feedback">
            <input autocomplete='off' type="password" class="form-control" name='password' required placeholder="Password"/>
            <span class="glyphicon glyphicon-lock form-control-feedback"></span>
        </div>
        <div style="margin-bottom:10px" class='row'>
            <div class='col-xs-12'>
                <button type="submit" class="btn btn-primary btn-block btn-flat"><i class='fa fa-lock'></i> {{trans("crudbooster.button_sign_in")}}</button>
            </div>
        </div>

        <div class='row'>
            <div class='col-xs-12' align="center"><p style="padding:10px 0px 10px 0px">{{trans("crudbooster.text_forgot_password")}} <a
                            href='{{route("getForgot")}}'>{{trans("crudbooster.click_here")}}</a></p></div>
        </div>
    </form>. 

我附上了我的错误屏幕。

谁能帮我解决这个问题。

【问题讨论】:

  • 在生成的 html 文件上 csrf 是否正确显示?
  • 在 Http/Kernal.php protected $middlewareGroups = [ 'web' =&gt; [ \Illuminate\Session\Middleware\StartSession::class,\App\Http\Middleware\VerifyCsrfToken::class,] 这两个启用了?
  • @Vidal Yes.it 显示隐藏的令牌。
  • @ViperTecPro 默认情况下 \Illuminate\Session\Middleware\StartSession::class 被评论并且我启用了它。
  • 你的网址是https://www.xyz....还是https://xyz..... ??

标签: php laravel


【解决方案1】:

如果可以看到隐藏的 CSRF HTML 输入字段,清除缓存数据:

php artisan cache:clear
php artisan view:clear

并重新生成一个新密钥:

php artisan key:generate

【讨论】:

    猜你喜欢
    • 2019-05-27
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 2021-04-11
    相关资源
    最近更新 更多