using auth in laravel service provider

怎甘沉沦 提交于 2019-12-18 07:13:10

问题


whenever i tried to use \Auth::User() i am getting non object property because my Auth::guest() returns true whenever i use them in service provider

use Illuminate\Contracts\View\View;
use Illuminate\Support\ServiceProvider;
use Illuminate\Contracts\View\Factory;
use App\relations;
use App\User;
use DB;
use Illuminate\Support\Facades\Auth;

class RelationServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        //
        \Auth::User()->id;

        $relation_friend_for_logged_user = DB::select( DB::raw("SELECT * FROM users"));

        $value = "asd";

        // for injecting objct
        View()->share('count', $value);
    }

but why \Auth::guest() is returning true whether i am logged in


回答1:


You probably want to use a View Composer for this. As far as I know the authenticated user is not yet available in your service providers boot method.

public function boot(Guard $auth) {
    view()->composer('*', function($view) use ($auth) {
        // get the current user
        $currentUser = $auth->user();

        // do stuff with the current user
        // ...

        // pass the data to the view
        $view->with('currentUser', $currentUser);
    });
}

Code modified from https://laracasts.com/discuss/channels/general-discussion/how-do-i-get-the-current-authenticated-user-laravel-5



来源:https://stackoverflow.com/questions/32201459/using-auth-in-laravel-service-provider

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!