日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線(xiàn)咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

ThinkPHP6是一款優(yōu)秀的PHP框架,它為我們提供了很多高效的工具和功能。其中,Auth授權(quán)是一個(gè)非常強(qiáng)大的功能,可以幫助我們?cè)趹?yīng)用程序中進(jìn)行權(quán)限管理。本文將介紹如何使用ThinkPHP6的Auth授權(quán)。

    安裝Auth組件

首先,我們需要安裝Auth組件。在終端中執(zhí)行以下命令:

composer require topthink/think-auth

登錄后復(fù)制

安裝完成后,我們需要在配置文件中添加Auth服務(wù)提供者:

// config/app.php

return [
    // ...
    'providers' => [
        // ...
        thinkuthServiceProvider::class,
    ],
];

登錄后復(fù)制

然后,我們需要執(zhí)行以下命令生成Auth配置文件:

php think auth:config

登錄后復(fù)制

    配置Auth組件

Auth組件可以通過(guò)配置來(lái)實(shí)現(xiàn)不同的權(quán)限管理需求,下面是一個(gè)基礎(chǔ)的配置:

// config/auth.php

return [
    'auth_on' => true,
    'auth_type' => 1,
    'auth_group' => 'auth_group',
    'auth_group_access' => 'auth_group_access',
    'auth_rule' => 'auth_rule',
    'auth_user' => 'user',
];

登錄后復(fù)制auth_on:是否開(kāi)啟權(quán)限認(rèn)證,true開(kāi)啟,false關(guān)閉;auth_type:認(rèn)證方式,1為實(shí)時(shí)認(rèn)證(即每次驗(yàn)證權(quán)限時(shí)都重新獲取權(quán)限),2為登錄認(rèn)證(即用戶(hù)登錄后驗(yàn)證權(quán)限);auth_group:用戶(hù)組數(shù)據(jù)表名;auth_group_access:用戶(hù)組明細(xì)關(guān)聯(lián)表名;auth_rule:權(quán)限規(guī)則表;auth_user:用戶(hù)信息表。

    創(chuàng)建權(quán)限規(guī)則

在使用Auth授權(quán)之前,我們需要先創(chuàng)建一些權(quán)限規(guī)則。權(quán)限規(guī)則可以控制用戶(hù)對(duì)不同資源的訪(fǎng)問(wèn)權(quán)限。我們需要在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)auth_rule表,然后通過(guò)添加記錄的方式來(lái)創(chuàng)建權(quán)限規(guī)則。

// appmodelAuthRule.php

namespace appmodel;

use thinkModel;

class AuthRule extends Model
{
    //
}

登錄后復(fù)制

接下來(lái),我們需要在數(shù)據(jù)庫(kù)中創(chuàng)建auth_rule表:

CREATE TABLE `auth_rule` (
    `id` INT NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(100) NOT NULL COMMENT '規(guī)則',
    `title` VARCHAR(100) NOT NULL COMMENT '規(guī)則名稱(chēng)',
    `type` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' COMMENT '規(guī)則類(lèi)型',
    `status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' COMMENT '狀態(tài)',
    `condition` TEXT COMMENT '規(guī)則表達(dá)式',
    PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='權(quán)限規(guī)則表';

登錄后復(fù)制

然后,我們可以通過(guò)以下方式添加一些權(quán)限規(guī)則:

use appmodelAuthRule;

$rule = new AuthRule;
$rule->name = 'admin/user/index';
$rule->title = '管理用戶(hù)';
$rule->save();

$rule = new AuthRule;
$rule->name = 'admin/user/add';
$rule->title = '添加用戶(hù)';
$rule->save();

$rule = new AuthRule;
$rule->name = 'admin/user/edit';
$rule->title = '編輯用戶(hù)';
$rule->save();

$rule = new AuthRule;
$rule->name = 'admin/user/del';
$rule->title = '刪除用戶(hù)';
$rule->save();

登錄后復(fù)制

    創(chuàng)建用戶(hù)組

除了權(quán)限規(guī)則外,我們還需要?jiǎng)?chuàng)建用戶(hù)組。用戶(hù)組是一些用戶(hù)的集合,擁有相同的訪(fǎng)問(wèn)權(quán)限。我們需要在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)auth_group表,然后通過(guò)添加記錄的方式來(lái)創(chuàng)建用戶(hù)組。

// appmodelAuthGroup.php

namespace appmodel;

use thinkModel;

class AuthGroup extends Model
{
    //
}

登錄后復(fù)制

接下來(lái),我們需要在數(shù)據(jù)庫(kù)中創(chuàng)建auth_group表:

CREATE TABLE `auth_group` (
    `id` INT NOT NULL AUTO_INCREMENT,
    `title` VARCHAR(100) NOT NULL COMMENT '組名',
    `status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' COMMENT '狀態(tài)',
    PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用戶(hù)組表';

登錄后復(fù)制

然后,我們可以通過(guò)以下方式添加一些用戶(hù)組:

use appmodelAuthGroup;

$group = new AuthGroup;
$group->title = '管理員';
$group->save();

$group = new AuthGroup;
$group->title = '普通用戶(hù)';
$group->save();

登錄后復(fù)制

    創(chuàng)建用戶(hù)組明細(xì)

現(xiàn)在,我們已經(jīng)創(chuàng)建了一些權(quán)限規(guī)則和用戶(hù)組。接下來(lái),我們需要將規(guī)則分配給用戶(hù)組。我們需要在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)auth_group_access表,然后通過(guò)添加記錄的方式來(lái)創(chuàng)建用戶(hù)組明細(xì)。

// appmodelAuthGroupAccess.php

namespace appmodel;

use thinkModel;

class AuthGroupAccess extends Model
{
    //
}

登錄后復(fù)制

接下來(lái),我們需要在數(shù)據(jù)庫(kù)中創(chuàng)建auth_group_access表:

CREATE TABLE `auth_group_access` (
    `uid` INT NOT NULL COMMENT '用戶(hù)id',
    `group_id` INT NOT NULL COMMENT '用戶(hù)組id',
    UNIQUE KEY `uid_group_id` (`uid`, `group_id`),
    KEY `uid` (`uid`),
    KEY `group_id` (`group_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='用戶(hù)組明細(xì)表';

登錄后復(fù)制

然后,我們可以通過(guò)以下方式將權(quán)限規(guī)則分配給用戶(hù)組:

use appmodelAuthGroupAccess;

$access = new AuthGroupAccess;
$access->uid = 1;
$access->group_id = 1;
$access->save();

$access = new AuthGroupAccess;
$access->uid = 2;
$access->group_id = 2;
$access->save();

$access = new AuthGroupAccess;
$access->uid = 3;
$access->group_id = 2;
$access->save();

登錄后復(fù)制

    使用Auth授權(quán)

現(xiàn)在,我們已經(jīng)創(chuàng)建了一些權(quán)限規(guī)則和用戶(hù)組,并將規(guī)則分配給了用戶(hù)組。接下來(lái),我們可以使用Auth授權(quán)來(lái)驗(yàn)證用戶(hù)是否有訪(fǎng)問(wèn)權(quán)限。

// 授權(quán)驗(yàn)證
use thinkacadeSession;
use thinkacadeRequest;
use thinkacadeConfig;
use thinkacadeDb;
use thinkuthAuth;

class BaseController extends Controller
{
    protected function initialize()
    {
        parent::initialize();

        // 如果用戶(hù)未登錄,則跳轉(zhuǎn)到登錄頁(yè)面
        if (!Session::has('user')) {
            $this->redirect('/login');
        }

        $uid = Session::get('user.id');

        // 如果是超級(jí)管理員,則直接通過(guò)權(quán)限驗(yàn)證
        if ($uid == Config::get('admin_id')) {
            return true;
        }

        $auth = new Auth;
        $route = strtolower(Request::controller() . '/' . Request::action());
        if (!$auth->check($route, $uid)) {
            $this->error('無(wú)權(quán)限');
        }
    }
}

登錄后復(fù)制

首先,我們需要從Session中獲取用戶(hù)登錄信息。如果用戶(hù)未登錄,則跳轉(zhuǎn)到登錄頁(yè)面。

然后,我們獲取當(dāng)前用戶(hù)的uid。如果當(dāng)前用戶(hù)是超級(jí)管理員,則直接通過(guò)權(quán)限驗(yàn)證。

否則,我們創(chuàng)建一個(gè)Auth實(shí)例,并獲取當(dāng)前請(qǐng)求的路由。然后,我們使用Auth的check方法驗(yàn)證當(dāng)前用戶(hù)是否有訪(fǎng)問(wèn)權(quán)限。如果沒(méi)有,則拋出一個(gè)無(wú)權(quán)限的錯(cuò)誤。

    小結(jié)

在本文中,我們學(xué)習(xí)了如何使用ThinkPHP6的Auth授權(quán)。我們使用Auth組件來(lái)實(shí)現(xiàn)權(quán)限管理,并創(chuàng)建了一些權(quán)限規(guī)則和用戶(hù)組。最后,我們使用Auth授權(quán)來(lái)驗(yàn)證用戶(hù)是否有訪(fǎng)問(wèn)權(quán)限。如果您需要更高級(jí)的權(quán)限管理功能,可以通過(guò)擴(kuò)展Auth組件來(lái)實(shí)現(xiàn)。

以上就是如何使用ThinkPHP6的Auth授權(quán)的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注www.xfxf.net其它相關(guān)文章!

分享到:
標(biāo)簽:auth thinkphp 授權(quán)
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定