【问题标题】:Restrict access | change template or redirect based on user role限制访问 |根据用户角色更改模板或重定向
【发布时间】:2017-09-11 19:05:23
【问题描述】:

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

我希望他不能登录前端页面。 (如下图所示,标题应出现以下内容)。

他需要在前台单独登录。有什么解决办法。

【问题讨论】:

  • 我认为您希望用户登录前端网站,管理员使用管理员登录页面登录和一个用户,后卫将保护管理员访问用户页面和用户访问管理页面
  • @dollar 好的,如何制作警卫。你能写一个答案吗
  • @dollar ,在我的情况下,管理员可以访问前端网站页面,但他不能在前端网站登录
  • 你最好用你的代码更新你的问题,需要检查你到底在做什么?
  • @dollar,我已经详细说明了每一件事

标签: laravel acl


【解决方案1】:

好的,所以你必须在 app.blade.php 上生成 if 和 else 来生成你的菜单。

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

【讨论】:

  • 好吧,让我试试,否则我必须把它放在我的前端网站布局页面上
  • 那么在这种情况下,管理员用户仍然登录前端网站吗?
【解决方案2】:

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

【讨论】:

  • 根据您的回答,如果我注销管理员然后他仍然登录到管理面板?
  • 不,管理员将被完全注销。
  • 我希望他仍然保持 lonin 到管理面板
【解决方案3】:

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

  1. 您可以使用不同的防护和中间件(管理员和用户使用单独的表)
  2. 您可以使用基于角色的权限(如果您对两种类型的用户都使用 users 表)

步骤 - 1:创建一个角色表(cols: id, role)和一个Role.php Model
步骤 - 2:在您的用户表中添加一个名为 'role_id' 的列
步骤 - 3:在您的 User.php 模型上为角色和用户建立关系 用户属于某个角色

// 假设你有2个角色: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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 2012-09-14
    • 2015-10-01
    相关资源
    最近更新 更多