【问题标题】:Laravel Auth::check() precheckLaravel Auth::check() 预检查
【发布时间】:2016-07-19 19:15:16
【问题描述】:

在我的网页上有 3 个选项可用,登录、注册和注销。

如果我只想显示可用按钮,例如如果用户已登录,我只想显示注销按钮,但如果用户是访客,则需要登录和注册按钮。

现在我添加了一个提供程序来检查用户是否经过身份验证。这是我的代码。

<?php

namespace App\Providers;

use View;
use Auth;
use Illuminate\Support\ServiceProvider;

class ShareServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
    */
    public function boot()
    {
        echo "Provider boot check ";
        var_dump(Auth::check());        

        if(Auth::check()) 
        {
            View::share(['loged_in' => true]);
        }
        else 
        {
             View::share(['loged_in' => false]);        
        }
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

但用户每次都显示为访客。当我在其他控制器中创建 Auth::check() 时,一切正常。但我不想在每个控制器中检查它。

【问题讨论】:

    标签: php laravel authentication


    【解决方案1】:

    我可以为您提供一种替代方案来解决您的问题,该解决方案在您的限制范围内有效。

    与其将其作为服务提供者,不如将其作为辅助函数,在刀片或控制器中调用。

    创建一个helpers.php 文件并将其放置为app/Http/helpers.php

    然后将它添加到 composer.json 数组中的 autoload

     "autoload": {
            "files": [
                "app/Http/helpers.php"
            ],
    

    composer dump-autoload,之后在你的终端中。

    现在,在您的 helpers.php 文件中添加以下方法:

    function userLoggedIn(){
        $logged_in = false;
        if(Auth::check()){
            $logged_in = true;
        }
        return $logged_in;
    }
    

    现在,您应该可以在任何控制器/刀片中使用此方法。

    @if(userLoggedIn())
        <p>Logged in</p>
    @else
        <p>Not Logged in</p>
    @endif
    

    这样,您不必承担必须在每个控制器中执行 Auth:check 的开销,并且您仍然可以在项目中需要它的任何地方使用它。

    资源:https://laracasts.com/discuss/channels/general-discussion/best-practices-for-custom-helpers-on-laravel-5?page=1

    【讨论】:

      猜你喜欢
      • 2014-11-19
      • 2018-12-19
      • 1970-01-01
      • 2020-04-20
      • 2020-09-05
      • 2016-05-07
      • 2018-01-07
      • 1970-01-01
      • 2016-09-27
      相关资源
      最近更新 更多