# 用于与权限
后端的用户管理包括角色,组,权限,密码重置和登录限制等功能。插件还可以注册权限,以控制对后端功能的访问。
### [](https://octobercms.com/docs/backend/users#users-and-permissions)用户和权限
对OctoberCMS实例的所有部分的访问由权限系统控制。在最低级别上,有超级用户(`is_superuser`标记设置为true的用户),管理员(用户)和权限。这些`\Backend\Models\User`模型是包含有关用户的所有重要信息的容器。
超级用户可以访问系统中的所有内容,并且只能由他们自己或其他超级用户来管理;即使管理员拥有`backend.manage_users`权限,常规管理员也无法看到或编辑它们。
权限是形式为字符串的密钥,`author.plugin.permission_name`通过直接在用户的“编辑管理员”页面上分配或通过用户角色的继承来授予用户。
在检查用户是否具有特定权限时,该用户角色的权限设置将被继承,然后被直接应用于该用户的任何权限覆盖。例如,如果用户**Bob**拥有角色**Genius**,而角色**Genius**拥有`eat_cake`权限,但是**Bob**的`eat_cake`权限被专门设置为拒绝,则**Bob**不会进入`eat_cake`。但是,如果**Bob**拥有`eat_vegetables`直接分配给他的权限,而**Genius**角色则没有,则**Bob**仍然拥有权限`eat_vegetables`。
角色(`\Backend\Models\UserRole`)是权限的分组,名称和描述用于标识角色。管理员一次只能分配一个角色。一个角色可以分配给多个管理员。十月默认提供两个系统角色,`developer`和`publisher`。可以创建具有其自己的权限组合的任意数量的自定义角色,并将其应用于用户。
> **注意:**拥有`manage_users`权限的任何用户都可以管理角色的分配,但只能管理其他用户(而不是自己)的角色,并且角色只能由超级用户创建或修改。
>
> **注意:**系统角色(`developer`,`publisher`和任何`is_system`设置为的角色`true`)不能通过后端更改其权限。假定它们具有对所有权限的访问权限,除非给定的权限`roles`在权限的定义中使用数组键指定了一个或多个特定的角色(在这种情况下,只有指定的系统角色才可以访问)。
组(`\Backend\Models\UserGroup`)是用于对管理员进行分组的组织工具,可以将它们视为“用户类别”。它们与权限无关,并且仅用于组织目的。例如,如果您想向该组中的所有用户发送电子邮件,则`Head Office Staff`只需执行`Mail::sendTo(UserGroup::where('code', 'head-office-staff')->get()->users, 'author.plugin::mail.important_notification', $data);`
### [](https://octobercms.com/docs/backend/users#backend-auth-facade)后端用户助手
全局`BackendAuth`外观可以用于管理主要继承`October\Rain\Auth\Manager`该类的管理用户。若要注册新的管理员用户帐户,请使用`BackendAuth::register`方法。
~~~
$user = BackendAuth::register([
'first_name' => 'Some',
'last_name' => 'User',
'login' => 'someuser',
'email' => 'some@website.tld',
'password' => 'changeme',
'password_confirmation' => 'changeme'
]);
~~~
该`BackendAuth::check`方法是检查用户是否已登录的快速方法。要返回已登录的用户模型,请`BackendAuth::getUser`改用。此外,活动用户将可以`$this->user`在任何[后端控制器中使用](https://octobercms.com/docs/backend/controllers-ajax)。
~~~
// Returns true if signed in.
$loggedIn = BackendAuth::check();
// Returns the signed in user
$user = BackendAuth::getUser();
// Returns the signed in user from a controller
$user = $this->user;
~~~
您可以使用`BackendAuth::findUserByLogin`方法通过用户的登录名查找用户。
~~~
$user = BackendAuth::findUserByLogin('someuser');
~~~
您可以通过提供登录名和密码来验证用户身份`BackendAuth::authenticate`。您还可以通过将`Backend\Models\User`模型与一起传递,从而简单地认证为用户`BackendAuth::login`。
~~~
// Authenticate user by credentials
$user = BackendAuth::authenticate([
'login' => post('login'),
'password' => post('password')
]);
// Sign in as a specific user
BackendAuth::login($user);
~~~
### [](https://octobercms.com/docs/backend/users#permission-registration)注册权限
插件可以通过覆盖[Plugin注册类中](https://octobercms.com/docs/plugin/registration#registration-file)的`registerPermissions`方法来注册后端用户权限。权限定义为一个数组,其中的键对应于权限键,值对应于权限描述。权限密钥由作者名称,插件名称和功能名称组成。这是示例代码:[](https://octobercms.com/docs/plugin/registration#registration-file)
~~~
acme.blog.access_categories
~~~
下一个示例显示如何注册后端许可项。使用权限密钥和说明定义权限。在后端权限管理中,用户界面权限显示为复选框列表。后端控制器可以使用插件定义的权限来限制用户对[页面](https://octobercms.com/docs/backend/users#page-access)或[功能的](https://octobercms.com/docs/backend/users#features)访问。
~~~
public function registerPermissions()
{
return [
'acme.blog.access_posts' => [
'label' => 'Manage the blog posts',
'tab' => 'Blog',
'order' => 200,
],
// ...
];
}
~~~
您也可以将`roles`选项指定为数组,每个值作为角色API代码。使用此代码创建角色后,它将成为系统角色,该角色始终向具有该角色的用户授予此权限。
~~~
public function registerPermissions()
{
return [
'acme.blog.access_categories' => [
'label' => 'Manage the blog categories',
'tab' => 'Blog',
'order' => 200,
'roles' => ['developer']
]
// ...
];
}
~~~
### [](https://octobercms.com/docs/backend/users#page-access)限制访问后端页面
在后端控制器类中,您可以指定访问控制器提供的页面所需的权限。这是通过`$requiredPermissions`控制器的属性完成的。此属性应包含一个权限密钥数组。如果用户权限与列表中的任何权限匹配,则框架将允许用户查看控制器页面。
~~~
<?php namespace Acme\Blog\Controllers;
use Backend\Classes\BackendController;
class Posts extends BackendController
{
public $requiredPermissions = ['acme.blog.access_posts'];
}
~~~
您还可以使用**星号**符号表示“所有权限”条件。在下一个示例中,所有具有“ acme.blog”权限的用户都可以访问控制器页面。串:
~~~
public $requiredPermissions = ['acme.blog.*'];
~~~
### [](https://octobercms.com/docs/backend/users#features)限制对功能的访问
后端用户模型具有允许确定用户是否具有特定权限的方法。您可以使用此功能来限制后端用户界面的功能。后端用户支持的许可方法为`hasAccess`和`hasPermission`。这两种方法都带有两个参数:权限密钥字符串(或密钥字符串数组)和一个可选参数,指示第一个参数列出的所有权限都是必需的。
如果用户是超级用户(设置为),则该`hasAccess`方法针对任何权限返回**true**。该方法更加严格,仅当用户实际上在其帐户或角色中具有指定的权限时才返回true。通常,是首选的方法,因为它会考虑超级用户的绝对能力。以下示例显示如何使用控制器代码中的方法:`is_superuser``true``hasPermission``hasAccess`
~~~
if ($this->user->hasAccess('acme.blog.*')) {
// ...
}
if ($this->user->hasPermission([
'acme.blog.access_posts',
'acme.blog.access_categories'
])) {
// ...
}
~~~
您也可以使用后端视图中的方法隐藏用户界面元素。下一个示例演示如何隐藏“编辑类别”[后端表单](https://octobercms.com/docs/backend/forms)上的按钮:
~~~
<?php if ($this->user->hasAccess('acme.blog.delete_categories')): ?>
<button
type="button"
class="oc-icon-trash-o btn-icon danger pull-right"
data-request="onDelete"
data-load-indicator="Deleting Category..."
data-request-confirm="Do you really want to delete this category?">
</button>
<?php endif ?>
~~~
- 基本说明
- 基本操作
- October cms 安装
- 后台控制器路径
- 图标
- 获取安装网上的插件/主题
- 插件构造器使用
- 定时任务
- October后台控制器
- vscode编辑器
- ajax操作
- 使用
- ajax更新组件
- ajax属性API
- JavaScript API
- ajax综合使用
- 主题
- 多语言主题
- 安装市场主题
- 主题程序处理
- 主题
- 页面
- 部件
- 布局
- 内容
- 组件
- 媒体
- 主题表单操作
- 表单使用
- 表单后端程序处理
- 插件
- 自定义插件
- 插件说明
- 插件导航条
- 插件数据库设置
- 插件的设置管理
- 插件的配置文件config
- 组件
- app服务
- app容器
- 扩展行为
- 缓存
- Collection类
- Lazy Collections
- Collection方法
- 助手函数
- 数组助手函数
- 路径助手函数
- 玄乐助手函数
- 其他助手函数
- 错误与记录
- 事件处理
- HTML页面
- 文件与目录操作
- 散列和加密
- 邮件
- 邮件内容
- 邮件发送
- 分页
- 模板解析器
- 动态解析器语法
- 队列消息
- 请求与输入
- 响应
- 视图
- 路由器
- 配置
- 验证操作
- 处理错误消息
- 错误消息与视图
- 可用的验证规则
- 有条件的验证规则
- 验证数组
- 错误消息
- 自定义验证规则
- 模型操作
- 定义模型与其属性
- 检索模型
- 插入与更新
- 删除模型
- 查询范围
- 事件操作
- 关联操作
- 定义关系
- 关系类型
- 多肽关系
- 关系查询
- 渴望加载
- 插入模型
- 数据库操作
- 基本用法
- 数据表结构
- 查询连贯操作
- 结果检索
- select子句
- 插入更新
- where子句
- 排序,分组,限制和偏移
- 文件附件
- Collection操作
- 属性操作
- 系列化json
- 数据库属性
- 数据库行为
- 控制器
- 后台控制器定义
- 后台页面
- 后台组件
- 后台表单
- 表单组件
- 表单视图
- 表单行为
- 后台列表
- 列表行为
- 列表过滤器
- 可用列类型
- 关系行为
- 关系行为类型
- 扩展关系行为
- 列表排序操作
- 导入导出操作
- 用于与权限
- corlate模板修改
- 修改顶部导航
- laravel问题
- 控制器不存在
- 控制器
- 路由组
- laravel笔记
- laravel 安装
- 伪静态配置
- 依赖注入 & 控制器
- 中间件
- 路由文件
- 视图