Skip to content
Home » [Update] จัดการสิทธิ์การเข้าถึงด้วย Role Base Access Control (RBAC) แบบใช้ฐานข้อมูล | การเข้าถึงข้อมูล – NATAVIGUIDES

[Update] จัดการสิทธิ์การเข้าถึงด้วย Role Base Access Control (RBAC) แบบใช้ฐานข้อมูล | การเข้าถึงข้อมูล – NATAVIGUIDES

การเข้าถึงข้อมูล: นี่คือโพสต์ที่เกี่ยวข้องกับหัวข้อนี้

สำหรับ Role Base Access Control หรือ RBAC นั้นเป็นการจัดการสิทธิ์การเข้าถึง Action ต่างๆ คล้ายกันกับการใช้งาน Access Control Filter แต่มีความแตกต่างเพิ่มเติมคือ

  • ผู้ใช้งานหนึ่งคนสามารถมีหลายบทบาทได้ เช่น บทบาทเป็น admin ของ ระบบ A แต่เป็น user ของระบบ B เป็นต้น

ใน Yii2 นั้นสามารถเก็บแบบ PHP ไฟล์ หรือเก็บแบบตารางในฐานข้อมูลก็ได้ สามารถดูรายละเอียดเพิ่มเติมได้ที่เว็บไซต์ของ Yii Framework เรื่อง Role Base Access Control (RBAC) (http://www.yiiframework.com/doc-2.0/guide-security-authorization.html) 
สำหรับตัวอย่างนี้จะใช้การเก็บข้อมูลในตารางฐานข้อมูล และใช้ Yii2 Advanced Application Template และกำหนดการใช้งานผ่าน console โดยมีวิธีการกำหนดดังนี้

Table of Contents

การตั้งค่าเพื่อเรียกใช้ RBAC ในส่วน Component

เป็นการกำหนด authManager เพื่อเรียกใช้งาน DbManager ใน Web Application โดยกำหนดที่ไฟล์ common/config/main.php 

return [
    // ...
    'components' => [
        'authManager' => [
            'class' => 'yii\rbac\DbManager',
        ],
        // ...
    ],
];

การ Migrate โครงสร้าง RBAC

ทำการ Migrate โครงสร้างตารางเก็บข้อมูล RBAC โดยเรียกใช้งาน Migrate Path โดยใช้คำสั่งดังต่อไปนี้

yii migrate --migrationPath=@yii/rbac/migrations

จะได้ตารางต่างๆ ในฐานข้อมูลโดยมีตารางต่างๆ ดังนี้
 
auth_item เป็นตารางเก็บ Permission หรือ สิทธิ์ ว่าในระบบมีเส้นทางอะไรบ้าง
auth_item_child เป็นตารางเก็บรายละเอียดแต่ล่ะสิทธ์ว่าสามารถเข้าถึงอะไรบ้าง
auth_assignment เป็นตารางเก็บการกำหนดสิทธิ์ให้แต่ละ User ID
auth_rule เป็นตารางเก็บกฎต่างๆ ที่เพิ่มขึ้นจาก Class เช่น การแก้ไขโพส ของตัวเอง

 

สร้าง RbacController

ในขั้นตอนนี้เป็นการสร้าง RbacController โดยสร้างใน console/controllers ซึ่งจะสืบทอดมาจาก Class yii\console\Controller 
 
ทดสอบโดยสร้าง Class RbacController และสร้าง actionHello() เพื่อทดสอบ console โดยมีรายละเอียดดังนี้

<?php
#RbacController.php
//yii rbac/hello
namespace console\controllers;

use yii\console\Controller;
use Yii;

class RbacController extends Controller
{
    public function actionHello()
    {
        echo 'Hello';
    }
}

จากนั้นเปิด CommandPrompt เพื่อทดสอบการทำงานโดยเข้าไปที่ Project จากนั้นพิมพ์คำสั่ง yii rbac/hello หากทำงานถูกต้องจะมีการแสดงผลดังนี้

Hello

การสร้างการอนุญาต (Permission)

สำหรับการอนุญาตในการเข้าถึงระบบนั้นจะใช้การสร้างเส้นทาง (Route) ในแต่ละ action เช่น module/controller/action โดยเพิ่ม actionCreatePermission() ในไฟล์ console/controllers/RbacController.php และกำหนดรายละเอียดดังนี้

public function actionCreatePermission()
    {
        //yii rbac/create-permission
        $auth = Yii::$app->authManager;
        
        // โพส (Post)
        $post_index = $auth->createPermission('post/index');
        $post_index->description = 'รายการโพส';
        $auth->add($post_index);
        
        $post_create = $auth->createPermission('post/create');
        $post_create->description = 'เพิ่มโพส';
        $auth->add($post_create);
        
        $post_update = $auth->createPermission('post/update');
        $post_update->description = 'แก้ไขโพส';
        $auth->add($post_update);
        
        $post_delete = $auth->createPermission('post/delete');
        $post_delete->description = 'ลบโพส';
        $auth->add($post_delete);
        
        $post_view = $auth->createPermission('post/view');
        $post_view->description = 'ดูโพส';
        $auth->add($post_view);
        echo 'Create Permission success!';
    }   

เรียกใช้งานผ่าน command prompt โดยเข้าไปที่ root ของ project แล้วเรียกคำสั่ง 
yii rbac/create-permission
หากทำถูกต้องจะปรากฏข้อความ
Create Permission success!
และจะเห็นข้อมูลในตาราง 
auth_item
    

การสร้างบทบาท (Role)

สำหรับบทบาท (Role) นั้นเป็นบทบาทที่มีการใช้ในระบบโดยเราสามารถกำหนดบทบาทได้หลายบทบาทตัวอย่างเช่น user เป็นบทบาทปกติหรือบทบาทเริ่มต้นใช้งานระบบได้เพียง action index และ view เท่านั้น บทบาท staff เป็นเจ้าหน้าที่โดยเจ้าหน้าที่เป็น user เช่นกัน แต่มีบทบาทเพิ่มขึ้นคือเข้า create ได้ และบทบาท admin 

บทบาท/action

index

view

create

update

delete

User

ใช่

ใช่

Staff

ใช่

Admin

ใช่

ใช่

เนื่องจาก staff จะกำหนดให้สามารถแก้ไขได้เฉพาะโพสตัวเอง จึงยังไม่ได้กำหนดการเข้าถึง update ได้ในขณะนี้ และบทบาทนั้นมีการเชื่อมโยงกันในลักษณะดังนี้
 
จะเห็นได้ว่า admin คือ staff ซึ่งสามารถเข้าถึงการอนุญาต (Permission) ของ staff ได้ และ
staff คือ user ซึ่งสามารถเข้าถึงการอนุญาต (Permission) ของ user ได้เช่นกัน
โดยเพิ่ม actionCreateRole() เพื่อกำหนดบทบาทของผู้ใช้งานดังนี้

public function actionCreateRole()
    {
        //yii rbac/create-role
        $auth = Yii::$app->authManager;
        
        // post
        $post_index = $auth->createPermission('post/index');
        $post_create = $auth->createPermission('post/create');
        $post_update = $auth->createPermission('post/update');
        $post_delete = $auth->createPermission('post/delete');
        $post_view = $auth->createPermission('post/view');
        
        $user = $auth->createRole('user');
        $auth->add($user);
        $auth->addChild($user, $post_index);
        $auth->addChild($user, $post_view);
        
        $staff = $auth->createRole('staff');
        $auth->add($staff);
        $auth->addChild($staff, $post_create);
        $auth->addChild($staff, $user);
        
        $admin = $auth->createRole('admin');
        $auth->add($admin);
        $auth->addChild($admin, $post_update);
        $auth->addChild($admin, $post_delete);
        $auth->addChild($admin, $staff);
        echo 'Create Role success!';
    }

เรียกใช้งานผ่าน command prompt โดยเข้าไปที่ root ของ project แล้วเรียกคำสั่ง 
yii rbac/create-role
หากทำถูกต้องจะปรากฏข้อความ
Create Role success!
และจะเห็นข้อมูลในตาราง 
auth_item_child

การกำหนดสิทธิ์ (Assignment)

การกำหนดสิทธิ์ให้กับผู้ใช้งานแต่ละคนว่าให้มีบทบาทอะไรบ้าง โดยเพิ่ม actionCreateAssignment() และเขียนโปรแกรมในการกำหนดสิทธิ์ดังนี้

public function actionCreateAssignment()
    {
        $auth = Yii::$app->authManager;
        $user = $auth->createRole('user');
        $staff = $auth->createRole('staff');
        $admin = $auth->createRole('admin');
        
        $auth->assign($user, 3);
        $auth->assign($staff, 2);
        $auth->assign($admin, 1);
        echo 'Create Assignment success!';
    }

เรียกใช้งานผ่าน command prompt โดยเข้าไปที่ root ของ project แล้วเรียกคำสั่ง 
yii rbac/create-assignment
หากทำถูกต้องจะปรากฏข้อความ
Create Assignment success!
และจะเห็นข้อมูลในตาราง 
auth_assignment

การสร้างกฎเพิ่มเติม (Rule)

กฎ (Rule) เป็น Class ที่สร้างขึ้นเพื่อการกำหนดความต้องการเพิ่มเติมสำหรับการเข้าถึง action ต่างๆ เช่นการแก้ไขได้เฉพาะโพสของตัวเอง เป็นต้น โดยการสร้าง Class StaffRule เก็บไว้ที่ common\components\StaffRule.php โดยกฎนี้เป็นการตรวจสอบ $model ว่า attribute ของเจ้าของโพสเป็น User ที่อยู่ในระบบหรือเปล่าโดยกำหนด attribute เป็น user_id นั่นเอง หากต้องการใช้ attribute ชื่ออื่นก็ให้เปลี่ยน user_id เป็นชื่ออื่นได้ตามต้องการ

<?php
namespace common\components;

use yii\rbac\Rule;
use Yii;

class StaffRule extends Rule{
    public $name = 'isStaff';
    
    public function execute($user, $item, $params) { //abstract method implement
        //return isset($params['post']) ? $params['post']->user_id == $user : false;
        if(isset($params['model'])){
            $model = $params['model'];
        }else{
            $id = Yii::$app->request->get('id');
            $model = Yii::$app->controller->findModel($id);
        }
        return $model->user_id == $user;
    }

}

จากนั้นเพิ่ม actionCreateRule() ในไฟล์ console\controllers\RbacController.php ดังนี้

public function actionCreateRule()
    {
        //เรียกใช้งาน yii rbac/create-rule
        $auth = Yii::$app->authManager;

        // add the rule
        $rule = new \common\components\StaffRule;
        $auth->add($rule);

        
        
        // add the "updateOwnPost" permission and associate the rule with it.
        $updateOwnPost = $auth->createPermission('updateOwnPost');
        $updateOwnPost->description = 'ปรับปรุงข้อมูลการโพสของตัวเอง';
        $updateOwnPost->ruleName = $rule->name;
        $auth->add($updateOwnPost);
        
        $post_update = $auth->createPermission('post/update');
        

        // "updateOwnPost" will be used from "updatePost"
        $auth->addChild($updateOwnPost, $post_update);
        
        // allow "staff" to update their own posts
        $staff = $auth->createPermission('staff');
        $auth->addChild($staff, $updateOwnPost);
        echo 'Generate UpdateOwnPost Success!';
    }

เรียกใช้งานผ่าน command prompt โดยเข้าไปที่ root ของ project แล้วเรียกคำสั่ง 
yii rbac/create-rule
หากทำถูกต้องจะปรากฏข้อความ
Create UpdateOwnPost success!
และจะเห็นข้อมูลในตาราง 
auth_item_child
auth_rule

เพิ่ม Access Control Filter (ACF) ใน Controller

Access Control Filter (ACF) เป็นการเพิ่มการตรวจสอบโดยใช้ Filter ของ Controller ในที่นี้จะทำการปรับแต่งในส่วน PostController โดยเพิ่มใน Method behaviors() ในส่วนของ ‘access’  ดังนี้

public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['post'],
                ],
            ],
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'allow' => true,
                        'roles' => ['@'],
                        'matchCallback' => function ($rule, $action) {
                            $module     = Yii::$app->controller->module->id;
                            $action     = Yii::$app->controller->action->id;
                            $controller = Yii::$app->controller->id;
                            $route      = "$module/$controller/$action";
                            if(Yii::$app->user->can($route)){
                                return true;
                            }
                        }
                    ]
                ]
            ]
        ];
    }

ทดสอบการใช้งาน RBAC

ทดสอบการใช้งานโดยเข้าระบบในแต่ละสิทธิ์โดยเริ่มจาก user แล้วทดลองเข้า action index และ view ว่าสามารถเข้าถึงได้หรือไม่ จากนั้นทดสอบโดยการเข้า action create จะต้องปรากฏหน้าแจ้ง Error ดังนี้

Forbidden (#403)
คุณไม่ได้รับอนุญาตให้ดำเนินการนี้
 
และลองทดสอบเช่นเดียวกันกับผู้ใช้งานที่มีสิทธิ์เป็น staff และ admin โดย staff จะต้องไม่สามารถแก้ไข (update) โพสของคนอื่นได้นอกจากโพสของตัวเอง และไม่สามารถลบ (delete) ได้ และ admin สามารถใช้งานได้ทุกๆ action

 

[Update] จัดการสิทธิ์การเข้าถึงด้วย Role Base Access Control (RBAC) แบบใช้ฐานข้อมูล | การเข้าถึงข้อมูล – NATAVIGUIDES

สำหรับ Role Base Access Control หรือ RBAC นั้นเป็นการจัดการสิทธิ์การเข้าถึง Action ต่างๆ คล้ายกันกับการใช้งาน Access Control Filter แต่มีความแตกต่างเพิ่มเติมคือ

  • ผู้ใช้งานหนึ่งคนสามารถมีหลายบทบาทได้ เช่น บทบาทเป็น admin ของ ระบบ A แต่เป็น user ของระบบ B เป็นต้น

ใน Yii2 นั้นสามารถเก็บแบบ PHP ไฟล์ หรือเก็บแบบตารางในฐานข้อมูลก็ได้ สามารถดูรายละเอียดเพิ่มเติมได้ที่เว็บไซต์ของ Yii Framework เรื่อง Role Base Access Control (RBAC) (http://www.yiiframework.com/doc-2.0/guide-security-authorization.html) 
สำหรับตัวอย่างนี้จะใช้การเก็บข้อมูลในตารางฐานข้อมูล และใช้ Yii2 Advanced Application Template และกำหนดการใช้งานผ่าน console โดยมีวิธีการกำหนดดังนี้

การตั้งค่าเพื่อเรียกใช้ RBAC ในส่วน Component

เป็นการกำหนด authManager เพื่อเรียกใช้งาน DbManager ใน Web Application โดยกำหนดที่ไฟล์ common/config/main.php 

return [
    // ...
    'components' => [
        'authManager' => [
            'class' => 'yii\rbac\DbManager',
        ],
        // ...
    ],
];

การ Migrate โครงสร้าง RBAC

ทำการ Migrate โครงสร้างตารางเก็บข้อมูล RBAC โดยเรียกใช้งาน Migrate Path โดยใช้คำสั่งดังต่อไปนี้

yii migrate --migrationPath=@yii/rbac/migrations

จะได้ตารางต่างๆ ในฐานข้อมูลโดยมีตารางต่างๆ ดังนี้
 
auth_item เป็นตารางเก็บ Permission หรือ สิทธิ์ ว่าในระบบมีเส้นทางอะไรบ้าง
auth_item_child เป็นตารางเก็บรายละเอียดแต่ล่ะสิทธ์ว่าสามารถเข้าถึงอะไรบ้าง
auth_assignment เป็นตารางเก็บการกำหนดสิทธิ์ให้แต่ละ User ID
auth_rule เป็นตารางเก็บกฎต่างๆ ที่เพิ่มขึ้นจาก Class เช่น การแก้ไขโพส ของตัวเอง

 

สร้าง RbacController

ในขั้นตอนนี้เป็นการสร้าง RbacController โดยสร้างใน console/controllers ซึ่งจะสืบทอดมาจาก Class yii\console\Controller 
 
ทดสอบโดยสร้าง Class RbacController และสร้าง actionHello() เพื่อทดสอบ console โดยมีรายละเอียดดังนี้

<?php
#RbacController.php
//yii rbac/hello
namespace console\controllers;

use yii\console\Controller;
use Yii;

class RbacController extends Controller
{
    public function actionHello()
    {
        echo 'Hello';
    }
}

จากนั้นเปิด CommandPrompt เพื่อทดสอบการทำงานโดยเข้าไปที่ Project จากนั้นพิมพ์คำสั่ง yii rbac/hello หากทำงานถูกต้องจะมีการแสดงผลดังนี้

Hello

การสร้างการอนุญาต (Permission)

สำหรับการอนุญาตในการเข้าถึงระบบนั้นจะใช้การสร้างเส้นทาง (Route) ในแต่ละ action เช่น module/controller/action โดยเพิ่ม actionCreatePermission() ในไฟล์ console/controllers/RbacController.php และกำหนดรายละเอียดดังนี้

public function actionCreatePermission()
    {
        //yii rbac/create-permission
        $auth = Yii::$app->authManager;
        
        // โพส (Post)
        $post_index = $auth->createPermission('post/index');
        $post_index->description = 'รายการโพส';
        $auth->add($post_index);
        
        $post_create = $auth->createPermission('post/create');
        $post_create->description = 'เพิ่มโพส';
        $auth->add($post_create);
        
        $post_update = $auth->createPermission('post/update');
        $post_update->description = 'แก้ไขโพส';
        $auth->add($post_update);
        
        $post_delete = $auth->createPermission('post/delete');
        $post_delete->description = 'ลบโพส';
        $auth->add($post_delete);
        
        $post_view = $auth->createPermission('post/view');
        $post_view->description = 'ดูโพส';
        $auth->add($post_view);
        echo 'Create Permission success!';
    }   

เรียกใช้งานผ่าน command prompt โดยเข้าไปที่ root ของ project แล้วเรียกคำสั่ง 
yii rbac/create-permission
หากทำถูกต้องจะปรากฏข้อความ
Create Permission success!
และจะเห็นข้อมูลในตาราง 
auth_item
    

การสร้างบทบาท (Role)

สำหรับบทบาท (Role) นั้นเป็นบทบาทที่มีการใช้ในระบบโดยเราสามารถกำหนดบทบาทได้หลายบทบาทตัวอย่างเช่น user เป็นบทบาทปกติหรือบทบาทเริ่มต้นใช้งานระบบได้เพียง action index และ view เท่านั้น บทบาท staff เป็นเจ้าหน้าที่โดยเจ้าหน้าที่เป็น user เช่นกัน แต่มีบทบาทเพิ่มขึ้นคือเข้า create ได้ และบทบาท admin 

บทบาท/action

index

view

create

update

delete

User

ใช่

ใช่

Staff

ใช่

Admin

ใช่

ใช่

เนื่องจาก staff จะกำหนดให้สามารถแก้ไขได้เฉพาะโพสตัวเอง จึงยังไม่ได้กำหนดการเข้าถึง update ได้ในขณะนี้ และบทบาทนั้นมีการเชื่อมโยงกันในลักษณะดังนี้
 
จะเห็นได้ว่า admin คือ staff ซึ่งสามารถเข้าถึงการอนุญาต (Permission) ของ staff ได้ และ
staff คือ user ซึ่งสามารถเข้าถึงการอนุญาต (Permission) ของ user ได้เช่นกัน
โดยเพิ่ม actionCreateRole() เพื่อกำหนดบทบาทของผู้ใช้งานดังนี้

public function actionCreateRole()
    {
        //yii rbac/create-role
        $auth = Yii::$app->authManager;
        
        // post
        $post_index = $auth->createPermission('post/index');
        $post_create = $auth->createPermission('post/create');
        $post_update = $auth->createPermission('post/update');
        $post_delete = $auth->createPermission('post/delete');
        $post_view = $auth->createPermission('post/view');
        
        $user = $auth->createRole('user');
        $auth->add($user);
        $auth->addChild($user, $post_index);
        $auth->addChild($user, $post_view);
        
        $staff = $auth->createRole('staff');
        $auth->add($staff);
        $auth->addChild($staff, $post_create);
        $auth->addChild($staff, $user);
        
        $admin = $auth->createRole('admin');
        $auth->add($admin);
        $auth->addChild($admin, $post_update);
        $auth->addChild($admin, $post_delete);
        $auth->addChild($admin, $staff);
        echo 'Create Role success!';
    }

เรียกใช้งานผ่าน command prompt โดยเข้าไปที่ root ของ project แล้วเรียกคำสั่ง 
yii rbac/create-role
หากทำถูกต้องจะปรากฏข้อความ
Create Role success!
และจะเห็นข้อมูลในตาราง 
auth_item_child

การกำหนดสิทธิ์ (Assignment)

การกำหนดสิทธิ์ให้กับผู้ใช้งานแต่ละคนว่าให้มีบทบาทอะไรบ้าง โดยเพิ่ม actionCreateAssignment() และเขียนโปรแกรมในการกำหนดสิทธิ์ดังนี้

public function actionCreateAssignment()
    {
        $auth = Yii::$app->authManager;
        $user = $auth->createRole('user');
        $staff = $auth->createRole('staff');
        $admin = $auth->createRole('admin');
        
        $auth->assign($user, 3);
        $auth->assign($staff, 2);
        $auth->assign($admin, 1);
        echo 'Create Assignment success!';
    }

เรียกใช้งานผ่าน command prompt โดยเข้าไปที่ root ของ project แล้วเรียกคำสั่ง 
yii rbac/create-assignment
หากทำถูกต้องจะปรากฏข้อความ
Create Assignment success!
และจะเห็นข้อมูลในตาราง 
auth_assignment

การสร้างกฎเพิ่มเติม (Rule)

กฎ (Rule) เป็น Class ที่สร้างขึ้นเพื่อการกำหนดความต้องการเพิ่มเติมสำหรับการเข้าถึง action ต่างๆ เช่นการแก้ไขได้เฉพาะโพสของตัวเอง เป็นต้น โดยการสร้าง Class StaffRule เก็บไว้ที่ common\components\StaffRule.php โดยกฎนี้เป็นการตรวจสอบ $model ว่า attribute ของเจ้าของโพสเป็น User ที่อยู่ในระบบหรือเปล่าโดยกำหนด attribute เป็น user_id นั่นเอง หากต้องการใช้ attribute ชื่ออื่นก็ให้เปลี่ยน user_id เป็นชื่ออื่นได้ตามต้องการ

<?php
namespace common\components;

use yii\rbac\Rule;
use Yii;

class StaffRule extends Rule{
    public $name = 'isStaff';
    
    public function execute($user, $item, $params) { //abstract method implement
        //return isset($params['post']) ? $params['post']->user_id == $user : false;
        if(isset($params['model'])){
            $model = $params['model'];
        }else{
            $id = Yii::$app->request->get('id');
            $model = Yii::$app->controller->findModel($id);
        }
        return $model->user_id == $user;
    }

}

จากนั้นเพิ่ม actionCreateRule() ในไฟล์ console\controllers\RbacController.php ดังนี้

public function actionCreateRule()
    {
        //เรียกใช้งาน yii rbac/create-rule
        $auth = Yii::$app->authManager;

        // add the rule
        $rule = new \common\components\StaffRule;
        $auth->add($rule);

        
        
        // add the "updateOwnPost" permission and associate the rule with it.
        $updateOwnPost = $auth->createPermission('updateOwnPost');
        $updateOwnPost->description = 'ปรับปรุงข้อมูลการโพสของตัวเอง';
        $updateOwnPost->ruleName = $rule->name;
        $auth->add($updateOwnPost);
        
        $post_update = $auth->createPermission('post/update');
        

        // "updateOwnPost" will be used from "updatePost"
        $auth->addChild($updateOwnPost, $post_update);
        
        // allow "staff" to update their own posts
        $staff = $auth->createPermission('staff');
        $auth->addChild($staff, $updateOwnPost);
        echo 'Generate UpdateOwnPost Success!';
    }

เรียกใช้งานผ่าน command prompt โดยเข้าไปที่ root ของ project แล้วเรียกคำสั่ง 
yii rbac/create-rule
หากทำถูกต้องจะปรากฏข้อความ
Create UpdateOwnPost success!
และจะเห็นข้อมูลในตาราง 
auth_item_child
auth_rule

เพิ่ม Access Control Filter (ACF) ใน Controller

Access Control Filter (ACF) เป็นการเพิ่มการตรวจสอบโดยใช้ Filter ของ Controller ในที่นี้จะทำการปรับแต่งในส่วน PostController โดยเพิ่มใน Method behaviors() ในส่วนของ ‘access’  ดังนี้

public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['post'],
                ],
            ],
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'allow' => true,
                        'roles' => ['@'],
                        'matchCallback' => function ($rule, $action) {
                            $module     = Yii::$app->controller->module->id;
                            $action     = Yii::$app->controller->action->id;
                            $controller = Yii::$app->controller->id;
                            $route      = "$module/$controller/$action";
                            if(Yii::$app->user->can($route)){
                                return true;
                            }
                        }
                    ]
                ]
            ]
        ];
    }

ทดสอบการใช้งาน RBAC

ทดสอบการใช้งานโดยเข้าระบบในแต่ละสิทธิ์โดยเริ่มจาก user แล้วทดลองเข้า action index และ view ว่าสามารถเข้าถึงได้หรือไม่ จากนั้นทดสอบโดยการเข้า action create จะต้องปรากฏหน้าแจ้ง Error ดังนี้

Forbidden (#403)
คุณไม่ได้รับอนุญาตให้ดำเนินการนี้
 
และลองทดสอบเช่นเดียวกันกับผู้ใช้งานที่มีสิทธิ์เป็น staff และ admin โดย staff จะต้องไม่สามารถแก้ไข (update) โพสของคนอื่นได้นอกจากโพสของตัวเอง และไม่สามารถลบ (delete) ได้ และ admin สามารถใช้งานได้ทุกๆ action

 


สื่อการเรียนรู้วิชาคอมพิวเตอร์ ชั้น ป.3 เรื่อง การดูแลรักษาอุปกรณ์คอมพิวเตอร์


สื่อการเรียนรู้วิชาคอมพิวเตอร์ ชั้น ป.3 เรื่อง การดูแลรักษาอุปกรณ์คอมพิวเตอร์
http://www.vdolearning.com/vdotutor/computerprathom3

นอกจากการดูบทความนี้แล้ว คุณยังสามารถดูข้อมูลที่เป็นประโยชน์อื่นๆ อีกมากมายที่เราให้ไว้ที่นี่: ดูเพิ่มเติม

สื่อการเรียนรู้วิชาคอมพิวเตอร์  ชั้น ป.3 เรื่อง การดูแลรักษาอุปกรณ์คอมพิวเตอร์

คลิปเสียงใคร?? เผย “ทักษิณ” ถูกหลอกไถเงิน


ในการถ่ายทำทุกเทป มีมาตรการเว้นระยะห่างทางสังคม (Social Distancing) เพื่อลดอัตราความเสี่ยงการติดเชื้อ (COVID19)

ติดตามช่องทางสื่อสารไบรท์ทีวี
Website : https://www.brighttv.co.th
Facebook : https://www.facebook.com/BrightTodayOfficial
Twitter : https://twitter.com/BrightTodayTh
Instagram : https://www.instagram.com/brighttv20
Youtube : https://youtube.com/BrightTV20
กด Subscribe ติดตามได้ที่นี่ : https://bit.ly/2J82750 เพื่อชมคลิปข่าวเด็ด, สัมภาษณ์ exclusive ก่อนใคร
ติดต่อโฆษณา โทร. 0863226363
ประยุทธ์ ทักษิณ ณัฐวุฒิ

คลิปเสียงใคร?? เผย “ทักษิณ” ถูกหลอกไถเงิน

เรียกคืนประวัติการแชท Line ที่ลบไปแล้ว – กู้แชทใน LINE #กู้ข้อมูลไลน์


📌 ติดตามสอนใช้แอนดรอยด์ Android
กดเลย : http://bit.ly/BenzSupakorn
⭐️ เพื่อน ๆ สงสัยตรงไหน ⭐️
สอบถามได้ที่ \”คอมเม้นท์\” ใต้คลิปวิดีโอนี้ได้นะครับ
==SPECIFICATIONS==
Version : Android 10
Video Editing : Adobe Premiere Pro
LINE กู้แชทในLINE กู้ข้อมูลไลน์

☎ ติดต่องาน
[email protected]
ติดตามข่าวสาร และความรู้ทางด้านไอที ได้ที่!
ทริคดี ๆ ในโทรศัพท์ : http://bit.ly/ITPhone
ทริคดี ๆ สำหรับคอมพิวเตอร์ : http://bit.ly/ITComTH
แจกฟรี! ความรู้เพิ่มเติม
[ ทริกดีๆ ] Microsoft Word : http://bit.ly/AMCWord
[ ทริกดีๆ ] Microsoft Excel : http://bit.ly/AMCExcel
[ ทริกดีๆ ] Powerpoint : http://bit.ly/AMCPowerpoint

กู้ ประวัติ แช ท ไลน์,
เรียก คืน ประวัติการ แช ท line ที่ ลบ ไป แล้ว,
line,
กู้ ข้อมูล ไลน์,
กู้ ข้อมูล ที่ ถูก ลบ,
กู้ ประวัติ แช ท ที่ ถูก ลบ,
กู้ ประวัติ แช ท ไลน์,
กู้ คืน ประวัติ แช ท ไลน์,
วิธี กู้ ประวัติ แช ท ไลน์,
กู้ ประวัติ แช ท line,
กู้ ประวัติ แช ท ใน ไลน์,

เรียกคืนประวัติการแชท Line ที่ลบไปแล้ว - กู้แชทใน LINE #กู้ข้อมูลไลน์

POSPOS ERP – Odoo Ep8 อธิบายเมนูหลักๆ และ การเข้าถึงข้อมูล


ทดลองใช้งานฟรีได้ที่ https://www.pospos.co/
🏆 ระบบบริหารจัดการร้านค้า POSPOS ที่ใช้งานง่ายที่สุด 🏆
✅ มีเจ้าหน้าที่สอนและช่วยเหลือการเริ่มต้นสร้างร้าน \”ฟรี !! ตลอดอายุการใช้งาน\”
✅ สอบถามให้คำปรึกษาเรื่อง POS ฟรี !!
✅ สามารถใช้งานแบบออฟไลน์ได้
📌 โปรแกรม POS
📌 โปรแกรมขายหน้าร้าน
📌 โปรแกรมขายสินค้า
📌 โปรแกรมคิดเงิน
📌 โปรแกรมร้านค้าปลีก ร้านค้าส่ง
📌 โปรแกรมร้านอาหาร
📌 โปรแกรมพิมพ์บาร์โค้ด
📌 โปรแกรมบริหารสต๊อกสินค้า
📌 โปรแกรมบริหารจัดการร้านค้า
👑 ระบบและฟีเจอร์ของเรา POSPOS 👑
💎 ขายสินค้า
💎 สินค้าขายด่วน
💎 ค้างจ่าย ผ่อนชำระ
💎 พักการขาย
💎 พิมพ์ใบเสร็จ
💎 พิมพ์ใบกำกับภาษี
💎 ใบเสนอราคา
💎 ใบรับของ
💎 ใบแจ้งหนี้
💎 ระบบกะการขาย
💎 ออก VAT
💎 ส่วนลดและโปรโมชั่น
💎 Dashboard สรุปยอดขายรายวัน
💎 ใบออเดอร์ จัดรายการสินค้า
💎 จัดสต๊อกสินค้า
💎 ระบบสาขา
💎 โอนย้ายสินค้าระหว่างสาขา
💎 สร้างบาร์โค้ด
💎 แสดงบาร์โค้ดขายสินค้า
💎 ราคาขายส่ง
💎 ระดับราคา
💎 ท๊อปปิ้ง
💎 นำเข้าสินค้าหลายชิ้นผ่าน Excel
💎 รายงานการขายรายวัน, รายเดือน, รายปี
💎 รายงานติดตามยอดขาย
💎 รายงานแสดงต้นทุนและกำไร
💎 ระบบพนักงาน สิทธ์พนักงาน
💎 ระบบสมาชิก
💎 แต้มสะสม
💎 นำเข้าสินค้าแบบ PO
💎 หน้าจอแสดงผลฝั่งลูกค้า
💎 การจัดการสินค้า Delivery
👑 และอื่นๆอีกมากมายอัพเดทระบบทุกวัน 👑
สามารถดูความสามารถของระบบทั้งหมดได้ที่
https://www.pospos.co/property
💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥
รองรับการใช้งานทุกอุปกรณ์
✅ คอมพิวเตอร์ PC , Notebook , Macbook
✅ โทรศัพท์ สมาร์ทโฟนทุกยี่ห้อ Android , IOS
✅ Tablet , iPad
รองรับการเชื่อมต่อกับอุปกรณ์ต่อพ่วงอื่นๆได้
✅ เครื่องพิมพ์ใบเสร็จ
✅ เครื่องยิงบาร์โค้ด
✅ ลิ้นชักเก็บเงินอัตโนมัติ
✅ อุปกรณ์ POS อื่นๆ
🔔 สอบถามเพิ่มเติม หรือ สั่งซื้ออุปกรณ์ POS ครบชุดพร้อมเปิดร้านขาย 🔔
☎️ โทร. 0813599468
💚 Line id : @pospos
💚 http://line.me/ti/p/@pospos
🌐 Facebook : https://www.facebook.com/posposco
📩 Email : [email protected]
โปรแกรมPOS, โปรแกรมขายหน้าร้าน, โปรแกรมขายสินค้า, โปรแกรมคิดเงิน, โปรแกรมร้านค้าปลีกร้านค้าส่ง, โปรแกรมร้านอาหาร, โปรแกรมพิมพ์บาร์โค้ด, โปรแกรมบริหารสต๊อกสินค้า, โปรแกรมบริหารจัดการร้านค้า, POSPOS, ระบบpos, ระบบจัดการหน้าร้าน, ระบบจัดการร้านค้าออนไลน์, ยิงบาร์โค้ด, โปรแกรมpos, โปรแกรมหน้าร้าน, โปรแกรมยิงบาร์โค้ด, โปรแกรมเช็คสต๊อกสินค้า, โปรแกรมขายของหน้าร้าน, เครื่องpos, เครื่องบันทึกเงินสด, เครื่องแคชเชียร์, เครื่องคิดเงิน, เครื่องขายหน้าร้าน, เครื่องเก็บเงิน, โปรแกรมร้านค้าปลีก, โปรแกรมคิดเงิน, โปรแกรมขายของ, โปรแกรมค้าปลีกค้าส่ง, โปรแกรมจัดสต๊อก, จัดสต๊อกสินค้า

POSPOS ERP - Odoo Ep8 อธิบายเมนูหลักๆ และ การเข้าถึงข้อมูล

ปิดด่วน! สกัดแอพ iPhone เข้าถึงเครือข่าย แอบเช็คข้อมูล เก็บข้อมูลส่วนตัว


สวัสดีครับ iOS 14 มาพร้อมกับหนึ่งในจุดเด่นในเรื่องการปกป้องความเป็นส่วนตัวของเราที่แจ้งให้รู้ ให้เราดู และปรับแต่งได้อย่างยืดหยุ่น หนึ่งในนั้นคือการเข้าถึงเครือข่ายในพื้นที่นั่นเองครับ
ภายหลังการติดตั้งและเปิดใช้งานหลายๆ แอพ เรามักจะบางแอพขออนุญาตเข้าถึงเครือข่ายในพื้นที่ของเรา นั่นคือแอพนั้นๆ ต้องการสแกนเครือข่ายในพื้นที่ของเราเพื่อเชื่อมต่อกับอุปกรณ์ต่างๆ เช่น Spotify ต้องการค้นหาและเชื่อมต่อกับลำโพงไร้สาย หรืออุปกรณ์ Chromecast เพื่อเล่นเสียงตามการทำงานของแอพ
แต่บางแอพก็ขอเข้าถึงเครือข่ายในพื้นที่ของเราแบบไม่มีเหตุผลที่ชัดเจน เช่นแอพ Facebook จะสแกนหาอุปกรณ์ต่างๆ เพื่ออะไร หรือเพื่อเล่นเสียงออกลำโพง ส่งวิดีโอไปเล่นออกทีวีเหรอ
ซึ่งในการเข้าถึงเครือข่ายในพื้นที่นั้น อาจทำให้แอพสามารถเก็บข้อมูลเกี่ยวกับเครือข่ายของเราได้ เช่น รู้ว่าเรามีอุปกรณ์อะไรที่ใช้งานร่วมกับ iPhone หรือ iPad ของเราแล้วเลือกโฆษณามาแสดง
เราไปดูป้องกัน ที่ทำเองได้ง่ายๆ กันเลยครับ 🍎
👍 เพื่อนๆ ที่สนใจ สามารถสั่ง iPhone 12 ทุกรุ่น แบบออนไลน์ได้ที่
🍎 Studio7 https://shopee.prf.hn/l/75yyNPV
🍎 iStudio by SPVi https://shopee.prf.hn/l/6qVOOjo
🍎 iStudio by copperwired https://shopee.prf.hn/l/ryqXXlL
🍎 iStudio by UFicon https://shopee.prf.hn/l/7x33nvN
🍎 Apple https://www.apple.com
😍 เคสที่ใช้ในคลิปนี้ เพื่อนๆ ที่สนใจสามารถแตะลิงค์นี้เพื่อดูรายละเอียดและสั่งซื้อได้เลยครับ
เคส iPhone 7 iPhone 11 Pro Max และ iPhone SE 2020 สวย ปกป้องดี คุ้มเกินราคา
🍎 Shopee : https://shopee.prf.hn/l/6P0JNql
(ผมซื้อเอง ใช้เอง รีวิวเอง ไม่ได้ขาย ไม่ได้รู้จักกับเจ้าของร้านนะครับ)
📧 ติดต่อเรื่องงาน [email protected]
▶️ ติดตามและกดไอคอนกระดิ่งเพื่อดูวิดีโอใหม่ได้ที่ https://goo.gl/LnkBtv 🙏
😍 แท็บชุมชนของสอนใช้ง่ายนิดเดียว : http://bit.ly/communityyoutube
👍 Facebook : fb.me/ipophowto
💙 Twitter : https://twitter.com/pophowto
🌟 iOS 14.2 ตัวเต็มมาแล้ว 32 การเปลี่ยนแปลงใหม่ล่าสุด ใช้เป็นทันที https://www.youtube.com/watch?v=j3qcr737nuo\u0026list=PLQBBpHICU2TfTleSdAkHwIgMjIiIOGI\u0026index=1
🌟 ฟรี! วิธีดู YouTube จอเล็ก ย่อจอ ปิดจอ จากแอพ YouTube โดยตรงบน iPhone iOS 14 https://www.youtube.com/watch?v=g0IWn5LizLo\u0026list=PLQBBpHICU2TWRbN7XWcfA_6hBRH3aki\u0026index=26
🌟 iOS 14 ตัวเต็มกับ 64 ฟีเจอร์ใหม่ ฟีเจอร์เด่น ใช้เป็นทันที! https://www.youtube.com/watch?v=1iYgn8JhURg\u0026list=PLQBBpHICU2TfTleSdAkHwIgMjIiIOGI\u0026index=2
🌟 iOS 14.0.1 แก้ 7 บั๊กสำคัญ อัพเดตด่วน! https://www.youtube.com/watch?v=XMmaWbq4w\u0026list=PLQBBpHICU2TfTleSdAkHwIgMjIiIOGI\u0026index=1
🌟 ฟรี! วิธีใหม่ ดู YouTube จอเล็ก ซ่อนจอ ปิดหน้าจอ ด้วย Firefox | สอนใช้ iOS 14 ง่ายนิดเดียว https://www.youtube.com/watch?v=4VxS8bkmw4A\u0026list=PLQBBpHICU2TfTleSdAkHwIgMjIiIOGI\u0026index=1
🌟 iOS 14 iPhone รุ่นไหนอัพเดตได้ ดูได้ที่นี่ Apple ประกาศอย่างเป็นทางการแล้ว
https://www.youtube.com/watch?v=15N0wuWUCH0\u0026list=PLQBBpHICU2S7uMQTT5L_5M06cOwfqX\u0026index=16\u0026t=0s
🌟 แค่ 3xx บาท พัดลมระบายความร้อน iPhone \u0026 Android เย็นเร็ว เฟรมเรตไม่ตก เกมลื่น ถนอมแบต คุ้มเกินราคา : https://bit.ly/reviewmemodl01
🌟 แค่ 3xx บาท WiFi แรงทั่วบ้านด้วย XiaoMi WiFi Amplifier Pro ใช้ง่าย คุ้มเกินราคา : https://bit.ly/reviewmiamplifier
🌟 CHOETECH Dual ที่ชาร์จแบบไร้สาย 5 ขดลวดฟรี QC3.0 Qi Certified Fast แท่นชาร์จแบตเตอรี่แบบไร้สาย : http://bit.ly/34uNUVQ
🌟 วิธีใหม่เคลียแรม iPhone และ iPad แบบใหม่ ง่ายสุดๆ เพิ่มความเร็ว ได้ผลจริง (2020) Apple ไม่เคยบอก
https://www.youtube.com/watch?v=wDAVd4Ik9eQ\u0026list=PLQBBpHICU2TcqoZIDZRmc9g53urOnWyG\u0026index=2\u0026t=0s
🌟 35 วิธีประหยัดแบตเตอรี่บน iOS 13, iOS 13.1 และ 13.1.1 ขึ้นไป ได้ผลจริง!
https://www.youtube.com/watch?v=r0ER3C0Cle0\u0026list=PLQBBpHICU2RmsgYMnPPNkLrgwhLt1o\u0026index=2\u0026t=0s
🌟 ลืมรหัสผ่าน Apple ID วิธีรีเซ็ต เปลี่ยนรหัสผ่าน Apple ID ง่ายนิดเดียว (2020)
https://www.youtube.com/watch?v=hf7I4qzUMQ\u0026list=PLQBBpHICU2TN_YtsoF4ADY26LXzAB3xN\u0026index=23\u0026t=0s
🌟 12 วิธีเพิ่มความเร็ว iPhone ทุกรุ่น บน iOS 13 เห็นผลทันที | สอนใช้ iPhone ง่ายนิดเดียว
https://www.youtube.com/watch?v=Yq74sgf5pdM\u0026list=PLQBBpHICU2QSxswoPTy53u3LqMeo_Jh\u0026index=7\u0026t=0s
Apple
iPhone
สอนใช้ง่ายนิดเดียว
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
เนื้อหาอื่นๆ ที่น่าสนใจสำหรับ iPhone, iPad และ iPod touch
🌟 เพิ่ม FaceID ปลดล็อคด้วยใบหน้าบน iPhone 5s, 6, 6 Plus, 7, 7 Plus, 8 และ iPhone 8 Plus ง่าย ดี ฟรี
https://www.youtube.com/watch?v=hcfq8TXAcmY\u0026list=PLQBBpHICU2ReSXZ8Ykb1_x1IKkG1pyqD\u0026index=2\u0026t=0s
🌟 ลืมรหัสผ่าน Apple ID ของ iPhone และ iPad รีเซ็ตตั้งใหม่ได้ใน 1 นาที! : https://youtu.be/KKjZ3QQPTbI
🌟 [2020] วิธีแก้ล็อค ปลดล็อค iPhone / iPad ติดรหัสผ่าน ง่ายๆ ทำเองได้ ไม่เสียตังค์ : https://youtu.be/5gFO8Q9k6M
🌟 4 วิธีชาร์จแบตเตอรี่ iPhone ให้เร็วขึ้น แบตเต็มไว ทำเองได้ง่ายๆ :
https://www.youtube.com/watch?v=tS2Hh9V6orE\u0026list=PLQBBpHICU2QljZApcbKwlWsX89x_9KJ0\u0026index=10\u0026t=0s

ปิดด่วน! สกัดแอพ iPhone เข้าถึงเครือข่าย แอบเช็คข้อมูล เก็บข้อมูลส่วนตัว

นอกจากการดูบทความนี้แล้ว คุณยังสามารถดูข้อมูลที่เป็นประโยชน์อื่นๆ อีกมากมายที่เราให้ไว้ที่นี่: ดูวิธีอื่นๆLEARN TO MAKE A WEBSITE

ขอบคุณที่รับชมกระทู้ครับ การเข้าถึงข้อมูล

Leave a Reply

Your email address will not be published. Required fields are marked *