Laravel 限制访问|根据用户角色更改模板或重定向

Laravel 限制访问|根据用户角色更改模板或重定向,laravel,acl,Laravel,Acl,我在laravel应用程序上有AdminLTE,当管理员用户通过AdminLTE登录屏幕登录时,他登录到admin panel并访问其页面。没关系,当他打开前端网站时,管理员姓名会显示在标题上(如下图所示),因为他之前通过管理员登录屏幕登录 我想要的是,他不能登录网站首页。(标题上应显示以下内容,如下图所示) 他需要在前台单独登录。解决方案是什么。好的,因此您必须在app.blade.php上生成菜单,并在其中生成if和else @if (!Auth::guest()) @incl

我在laravel应用程序上有AdminLTE,当管理员用户通过AdminLTE登录屏幕登录时,他登录到admin panel并访问其页面。没关系,当他打开前端网站时,管理员姓名会显示在标题上(如下图所示),因为他之前通过管理员登录屏幕登录

我想要的是,他不能登录网站首页。(标题上应显示以下内容,如下图所示)


他需要在前台单独登录。解决方案是什么。

好的,因此您必须在app.blade.php上生成菜单,并在其中生成if和else

 @if (!Auth::guest())
    @include('admin.includes.normal_header')
 @endif

您需要制作两个中间件,一个是管理中间件,另一个是普通登录用户的中间件。
在普通中间件中,您可以检查用户是否以管理员身份登录。如果以管理员身份登录,则将其注销。

有几种方法可以解决此问题:

  • 您可以使用不同的防护和中间件(对管理员和用户使用单独的表)
  • 可以使用基于角色的权限(如果对两种类型的用户都使用用户表)
  • 步骤1:创建一个角色表(cols:id,role)和一个
    role.php
    Model
    步骤2:在用户表中添加一个名为“角色id”的列 步骤3:在
    user.php
    模型上为角色和用户建立关系 用户属于某个角色

    //假设您有两个角色:
    1->Admin
    2->User

    public function role(){
         return $this->belongsTo(Role::class);
    }
    
    步骤3:在导航中,使用if-else条件

         @if (!Auth::guest())
              @if(auth()->user()->role()->id == 1)
                  @include('admin.admin_header_nav')
              @else
                  @include('user.normal_header_nav')
              @endif        
         @endif
    
    
        // you can just use those condition on a link, or create a middleware     
        //called admin to wrap up the condition( auth()->user()->role()->id == 1 ),    
       // leaving it up to you
    

    好吧,让我试试,我必须把它放在我前面的网站布局PaGeSo,在这种情况下,管理员用户仍然登录前端网站。我认为你希望用户登录前网站和管理员登录使用管理员登录页面,如果这是你需要做多个AUTH的情况下,你需要2个单独的警卫一个管理员和一个用户,guard将保护管理员访问用户页面和用户访问adminpages@dollar好的,如何制作护卫。你能写一封信吗answer@dollar,在我的情况下,管理员可以访问前端网站页面,但他不得登录前端网站。最好您使用代码更新您的问题,需要检查您到底在做什么?@dollar,我已经根据你的回答回答了每个问题,如果我注销了管理员,那么他仍然登录到管理员面板?不,管理员将完全注销。我希望他仍然登录到管理员面板