Laravel Auth :: check()AND / OR Request :: user()返回null / false

时间:2016-01-06 17:45:14

标签: php laravel authentication eloquent

我是Laravel的新手,目前正在尝试使用LTS。

实际上,我正在开展一个项目,我使用maatwebsite/laravel-sidebartrieu/trusty。因此,为了通过实施authorize()来使用侧边栏的SidebarExtender功能,我无法获取/匹配当前登录的用户/当前登录的用户权限。

我还尝试使用Guard contract的中间件,然后是Auth facade,但没有运气。

最后,我创建了一个名为AuthenticationInterface的Contract接口和一个名为AuthenticationRepo的存储库hasAccess() [返回Request::user() OR Auth::user()]并注册/绑定它们进入服务提供商。但在这里,Auth / Request方法也不起作用。我总是得到' null / false'即使在用户登录后也是如此。

所以,任何人都可以给我解决方案......

更新:代码

  1. UserInterface [合约]:
  2.   

    块引用

     interface UserInterface
     {
       public function hasAccess($permissions);
     }
    
    1. UserRepo [Repositories]:
    2.   

      块引用

       use Illuminate\Support\Facades\Request;
       use Modules\User\Models\User;
      
       class UserRepo implements UserInterface
       {
         public function hasAccess($permissions)
         {
            if ($user = Request::user()) { // use Auth; -> Auth::user()
              return $user->can($permissions);
            }
      
            return false;
         }
       }
      
      1. SidebarExtender:
      2.   

        块引用

          use Maatwebsite\Sidebar\Menu;
          use Maatwebsite\Sidebar\Item;
          use Maatwebsite\Sidebar\Group;
          use Maatwebsite\Sidebar\SidebarExtender;
          use App\Sidebar\BaseSidebar;
        
          class UserSidebarExtender extends BaseSidebar implements SidebarExtender
          {
            public function extendWith(Menu $menu)
            {
               dd($this->auth->check());
               $menu->group('UserSidebar', function(Group $group){
                   $group->weight(100);
                   $group->item('Try', function (Item $item) {
                     $item->icon('fa fa-cogs');
                     $item->weight(100);
                     $item->route('dashboard');
                     $item->authorize(
                         $this->auth->hasAccess('manage.blog')
                     );
                   });
                 });
                 return $menu;
             }
          }
        
        1. BaseSidebar:
        2.   

          块引用

           use Modules\User\Repositories\UserInterface as Auth;
           //use Closure;
           //use Illuminate\Contracts\Auth\Guard;
           abstract class BaseSidebar
           {
              protected $auth;
             public function __construct(Guard $auth)
             {
                $this->auth = $auth;
             }
           }
          

          我还使用了modulesidebarcreatesidebar两个文件,createsideabr中使用view()->creator(...)modulesidebar注册了Maatwebsite\Sidebar\SidebarManager 1}}使用侧边栏自动修改:)除hasAccess函数...

          外,一切都很好

          谢谢&此致

0 个答案:

没有答案