dereuromark/cakephp-tinyauth

一个用于简单处理用户认证和授权的 CakePHP 插件。

安装次数: 190,454

依赖者: 9

建议者: 1

安全: 0

星标: 128

关注者: 10

分支: 43

开放问题: 3

类型:cakephp-plugin

4.2.0 2024-09-16 20:15 UTC

README

CI Latest Stable Version Coverage Status Minimum PHP Version License Total Downloads Coding Standards

一个用于简单处理认证和用户授权的 CakePHP 插件。

此分支适用于 CakePHP 5.0+。详细信息请参阅版本映射

功能

认证

哪些是公开操作,哪些需要登录?

  • 强大的通配符 (*) 操作符。
  • 快速设置,5分钟内完成集成。

授权

登录后,您可以看到哪些操作?

  • 单角色:1个用户有1个角色(例如,用户和角色表)
  • 多角色:1个用户可以有1...n个角色(例如,用户、角色和“roles_users”交叉表)
  • 快速设置,5分钟内完成集成。

有用的助手

  • AuthUser 组件和助手用于访问状态和状态“auth数据”。
  • Authentication 组件和助手用于检查当前其他操作上的 isPublic()
  • Auth DebugKit 面板,可详细了解当前 URL 和认证状态。

这是什么想法?

默认的 CakePHP 认证和授权至少依赖于每个控制器中的代码更改,可能更多。此插件通过一行更改即可钩入,并使用配置文件管理所有这些,无需触摸所有这些控制器,包括插件控制器。

还可以在不编写代码的情况下管理配置文件。此外,它还可以通过适配器完全移动到数据库,并由 CRUD 后端管理。

问自己:你是否需要完整的(RBAC 数据库)ACL 产生的开销和复杂性?请参阅我的帖子 acl-access-control-lists-revised/。如果不是,那么这个插件可能是你的答案,并且是解决你的认证问题的超级快速解决方案 :)

即使你不利用认证或授权,可用的 AuthUserComponent 和 AuthUserHelper 在处理控制器或视图级别的基于角色的决策时也非常有用。它们也可以独立工作。

演示

查看https://sandbox.dereuromark.de/auth-sandbox

auth_allow.ini

为每个控制器定义公开操作(任何人都可以访问)

Users = index,view
Admin/Maintenance = pingCheck
PluginName.SomeController = *
MyPlugin.Api/V1 = *

auth_acl.ini

定义哪些操作可以由哪些登录用户角色访问

[Users]
index = *
add,edit = user,super-user

[Admin/Users]
* = admin

[Translate.Admin/Languages]
* = *

AuthUser 组件和助手

$currentId = $this->AuthUser->id();

$isMe = $this->AuthUser->isMe($userEntity->id);

if ($this->AuthUser->hasRole('mod')) {
}

if ($this->AuthUser->hasAccess(['action' => 'secretArea'])) {
}

// Helper only
echo $this->AuthUser->link('Admin Backend', ['prefix' => 'Admin', 'action' => 'index']);
echo $this->AuthUser->postLink('Delete', ['action' => 'delete', $id], ['confirm' => 'Sure?']);

安装

包含插件的方法与每个其他 CakePHP 插件类似

composer require dereuromark/cakephp-tinyauth

然后,要加载插件,请运行以下命令

bin/cake plugin load TinyAuth

或手动将以下行添加到您的应用 src/Application.php 文件的 bootstrap() 函数中

$this->addPlugin('TinyAuth');

这样就可以了。它应该已经启动并运行。

文档

有关设置和使用方法,请参阅文档

另外,请注意原始的博客文章以及它是如何开始的。