婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Laravel框架實(shí)現(xiàn)的rbac權(quán)限管理操作示例

Laravel框架實(shí)現(xiàn)的rbac權(quán)限管理操作示例

熱門(mén)標(biāo)簽:打開(kāi)百度地圖標(biāo)注 智能電銷(xiāo)語(yǔ)音機(jī)器人資訊 亳州企業(yè)外呼系統(tǒng) 海南外呼系統(tǒng)方案 兼職做地圖標(biāo)注好賺錢(qián)嗎 蘇州外呼系統(tǒng)有效果嗎 400 電話(huà) 辦理 山東電銷(xiāo)卡外呼系統(tǒng)原理是什么 地圖標(biāo)注怎么做商戶(hù)驗(yàn)證

本文實(shí)例講述了Laravel框架實(shí)現(xiàn)的rbac權(quán)限管理操作。分享給大家供大家參考,具體如下:

介紹:根據(jù)不同的權(quán)限,在菜單欄顯示不同的功能,只對(duì)菜單進(jìn)行了限制,若對(duì)路由也進(jìn)行限制,請(qǐng)自行完善

1、建表(用戶(hù)表、角色表、權(quán)限表、用戶(hù)角色表、角色權(quán)限表)

CREATE TABLE IF NOT EXISTS mr_role
(
id int(11) PRIMARY KEY AUTO_INCREMENT COMMENT '自增id',
name varchar(30) NOT NULL COMMENT '角色名'
)ENGINE=innodb DEFAULT CHARSET=utf8 COMMENT='角色表';
CREATE TABLE IF NOT EXISTS mr_privilege
(
id int(11) PRIMARY KEY AUTO_INCREMENT COMMENT '自增id',
name varchar(30) NOT NULL COMMENT '權(quán)限名',
route varchar(50) NOT NULL COMMENT '權(quán)限所有的路由',
description varchar(100) NOT NULL COMMENT '權(quán)限的描述'
)ENGINE=innodb DEFAULT CHARSET=utf8 COMMENT='權(quán)限表';
CREATE TABLE IF NOT EXISTS mr_user_role
(
id int(11) PRIMARY KEY AUTO_INCREMENT COMMENT '自增id',
user_id int(11) NOT NULL COMMENT '用戶(hù)id',
role_id int(11) NOT NULL COMMENT '角色id'
)ENGINE=innodb DEFAULT CHARSET=utf8 COMMENT='用戶(hù)角色表';
CREATE TABLE IF NOT EXISTS mr_role_privilege
(
id int(11) PRIMARY KEY AUTO_INCREMENT COMMENT '自增id',
role_id int(11) NOT NULL COMMENT '角色id',
privilege_id int(11) NOT NULL COMMENT '權(quán)限id'
)ENGINE=innodb DEFAULT CHARSET=utf8 COMMENT='角色權(quán)限表';

2、在用戶(hù)模型和角色模型中實(shí)現(xiàn)多對(duì)多

class User extends Model
{
  protected $primaryKey = 'id';
  protected $table = 'user';
  public $timestamps = false;
  public $guarded = [];
  public function roles()
  {
    return $this->belongsToMany('App\Model\Role', 'user_role', 'user_id', 'role_id')->withPivot('user_id', 'role_id');
  }
}
class Role extends Model
{
  protected $table = 'role';
  protected $primaryKey = 'id';
  public $timestamps = false;
  public $guarded = [];
  public function privileges()
  {
    return $this->belongsToMany('App\Model\Privilege', 'role_privilege', 'role_id', 'privilege_id')->withPivot(['role_id', 'privilege_id']);
  }
}

3、將菜單視為公共區(qū)域,在app\Providers\AppServiceProvider.php里寫(xiě)

public function boot()
{
    \View::composer('layout.slide', function($view) {
      $roles_id = User::find(session('user')['id'])->roles->map(function ($role) {
        return $role->id;
      });  // 使用map,最終得到的結(jié)果$roles_id = [1, 2, ...]
      $privileges = [];
      foreach ($roles_id as $role) {
        $privileges = array_merge($privileges, Role::find($role)->privileges->map(function ($privilege) {
          return [$privilege->name, $privilege->route];
        })->toArray());
      }  // 得到的結(jié)果,$prpvileges = [['index/..', '列表'], ['', '']]
      $view->with('privileges', $privileges);
    });
}

4、菜單的實(shí)現(xiàn)(可以直接遍歷一個(gè)div,我這里因?yàn)橛胁煌臉邮?,便用了判斷?/p>

@foreach ($privileges as $privilege)
      @if ($privilege[1] == 'key/index'  $privilege[0] == '鍵名列表')
        div class="slide__left__key" style="margin-top: 10px;">a href="{{ url('key/index') }}" rel="external nofollow" >span class="glyphicon glyphicon-th">/span> 鍵名列表/a>/div>
      @endif
      @if ($privilege[1] == 'key/create'  $privilege[0] == '添加鍵名')
          div class="slide__left__key">a href="{{ url('key/create') }}" rel="external nofollow" >span class="glyphicon glyphicon-plus">/span> 添加鍵名/a>/div>
      @endif
      @if ($privilege[1] == 'project/index'  $privilege[0] == '項(xiàng)目列表')
          div class="slide__left__key" style="margin-top: 20px;">a href="{{ url('project/index') }}" rel="external nofollow" >span class="glyphicon glyphicon-th-list">/span> 項(xiàng)目列表/a>/div>
      @endif
      @if ($privilege[1] == 'project/create'  $privilege[0] == '添加項(xiàng)目')
          div class="slide__left__key">a href="{{ url('project/create') }}" rel="external nofollow" >span class="glyphicon glyphicon-edit">/span> 添加項(xiàng)目/a>/div>
      @endif
      @if ($privilege[1] == 'user/index'  $privilege[0] == '用戶(hù)列表')
          div class="slide__left__key" style="margin-top: 20px;">a href="{{ url('user/index') }}" rel="external nofollow" >span class="glyphicon glyphicon-th-large">/span> 用戶(hù)列表/a>/div>
      @endif
      @if ($privilege[1] == 'user/create'  $privilege[0] == '添加用戶(hù)')
          div class="slide__left__key">a href="{{ url('user/create') }}" rel="external nofollow" >span class="glyphicon glyphicon-plus-sign">/span> 添加用戶(hù)/a>/div>
      @endif
    @endforeach

更多關(guān)于Laravel相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Laravel框架入門(mén)與進(jìn)階教程》、《php優(yōu)秀開(kāi)發(fā)框架總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》

希望本文所述對(duì)大家基于Laravel框架的PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • 在Laravel5中正確設(shè)置文件權(quán)限的方法
  • Laravel5權(quán)限管理方法詳解
  • laravel實(shí)現(xiàn)簡(jiǎn)單用戶(hù)權(quán)限的示例代碼
  • 解決laravel中日志權(quán)限莫名變成了root的問(wèn)題
  • laravel利用中間件做防非法登錄和權(quán)限控制示例
  • Laravel5.1數(shù)據(jù)庫(kù)連接、創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建model及創(chuàng)建控制器的方法
  • laravel5.1框架基礎(chǔ)之Blade模板繼承簡(jiǎn)單使用方法分析
  • Laravel5.1框架注冊(cè)中間件的三種場(chǎng)景詳解
  • laravel5.1框架基礎(chǔ)之路由詳解
  • laravel5.1框架model類(lèi)查詢(xún)的實(shí)現(xiàn)方法
  • Laravel5.1框架自帶權(quán)限控制系統(tǒng) ACL用法分析

標(biāo)簽:清遠(yuǎn) 萊蕪 金華 呼倫貝爾 紹興 安康 溫州 綏化

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Laravel框架實(shí)現(xiàn)的rbac權(quán)限管理操作示例》,本文關(guān)鍵詞  Laravel,框架,實(shí)現(xiàn),的,rbac,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Laravel框架實(shí)現(xiàn)的rbac權(quán)限管理操作示例》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Laravel框架實(shí)現(xiàn)的rbac權(quán)限管理操作示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 增城市| 郎溪县| 贵南县| 柳河县| 疏附县| 汶川县| 如皋市| 安塞县| 岳阳县| 余庆县| 济阳县| 洛宁县| 东丽区| 枝江市| 达孜县| 巴东县| 永靖县| 永泰县| 祥云县| 阿拉善右旗| 阿拉善右旗| 邢台县| 蓝山县| 中山市| 镶黄旗| 嘉义县| 晴隆县| 甘孜| 务川| 海丰县| 仲巴县| 民县| 广安市| 闽侯县| 蓝田县| 莎车县| 武陟县| 大埔县| 扎赉特旗| 黑龙江省| 甘肃省|