yii2.0权限控制 ACF权限--登录验证

ACF是一种通过yii\filters\AccessControl类来实现的简单授权

一般在控制器中我们调用如下:
打开backend\controller\SiteController.php 我们看到这样一段代码

public function behaviors()
{
return [
‘access‘ => [
‘class‘ => AccessControl::className(),
‘rules‘ => [
[
‘actions‘ => [‘login‘, ‘error‘],
‘allow‘ => true,
],
[
‘actions‘ => [‘logout‘, ‘index‘],
‘allow‘ => true,
‘roles‘ => [‘@‘],
],
],
],
‘verbs‘ => [
‘class‘ => VerbFilter::className(),
‘actions‘ => [
‘logout‘ => [‘post‘],
],
],
];
}

几个必须到配置:
1、配置验证类User

‘user‘ => [
‘identityClass‘ => ‘common\models\Usermember‘,
‘enableAutoLogin‘ => true,
‘identityCookie‘ => [‘name‘ => ‘_identity-frontend‘, ‘httpOnly‘ => true],
‘loginUrl‘=>‘/public/login‘
],

2、继承IdentityInterface接口
一般来说,从数据库查找数据,只需要继承AR类即可,但是,我们这个是用户登录模型,核心是验证,所以自然需要实现核心的验证功能,就像LoginForm模型提到的validatePassword一样,实际的验证逻辑是在当前的User模型完成的。一般来说,实现IdentityInterface接口,需要实现以下方法:

public static function findIdentity($id); //①

public static function findIdentityByAccessToken($token, $type = null);   //②

public function getId();    //③

public function getAuthKey();   //④

public function validateAuthKey($authKey);    //⑤

3、登录到login()做相关调用验证:

public function login()
{
if ($this->validate()) {
if($this->rememberMe)
{
$this->_user->generateAuthKey();//③
}
return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 36002430 : 0);
}
return false;
}

4、对用到控制器类做配置

/**

  • {@inheritdoc}
    */
    public function behaviors()
    {
    return [
    ‘access‘ => [
    ‘class‘ => AccessControl::className(),
    ‘only‘ => [‘userhome‘, ‘signup‘],
    ‘rules‘ => [
    [
    ‘actions‘ => [‘‘,‘signup‘],
    ‘allow‘ => true,
    ‘roles‘ => [‘?‘],
    ],
    [
    ‘actions‘ => [‘userhome‘],
    ‘allow‘ => true,
    ‘roles‘ => [‘@‘],
    ],
    ],
    ],
    ‘verbs‘ => [
    ‘class‘ => VerbFilter::className(),
    ‘actions‘ => [
    ‘logout‘ => [‘post‘],
    ],
    ],
    ];
    }

原文地址:https://blog.51cto.com/13238147/2436066

时间: 2024-08-01 15:40:29

yii2.0权限控制 ACF权限--登录验证的相关文章

软件开发的权限控制和权限验证

在开发软件时,我们经常会遇到账号体系,那么就不可避免地涉及到了权限控制或者叫权限管理. 很多人容易把权限控制和权限验证搞混淆,以为在前端隐藏了某个按钮就控制好权限了,其实用户可以直接发送一个接口请求服务端来完成这个操作. 权限控制是指在一个系统中存在多个用户角色,不同的角色拥有不同的系统资源访问权限,它的实现更直观地体现在客户端的用户界面中. 例如,针对VIP用户,很多功能都是可以用的,但是在普通用户的客户端界面上,同样的按钮有时是置灰的或者隐藏的. 权限验证是指系统服务器针对客户端发送过来的请

通用权限管理平台权限控制--按钮权限

通用权限管理系统的重点在于如何更好的控制按钮操作权限,在下结合自己的平台经验,在使用MVC的环境下,使用自定义MVC控件,并且结合系统的权限控制于一体,减少业务在权限方面的控制,使对按钮权限的控制更加简洁. 通用权限控制系统的权限用户控件实现以后,在实际使用中如下所示: @Html.Eap().Button().Id("btnAdd").Name("添加").Class("easyui-linkbutton").IconClass("i

Yii2.0中(Hash is invalid error)验证错误

老项目数据迁移到Yii2.0后,密码仍使用md5加密.但是通过yii2.0的验证类的validatePassword($password)函数验证始终返回false: public function validatePassword($password){if(is_null($this->password)) return false;return Yii::$app->getSecurity()->validatePassword($this->salt . $password

移动端权限控制--设置每个登录用户的sessionId

前言: 在pc端,每个用户首次登录后,浏览器会返回一个sessionId,存放在浏览器的响应中. 当再次访问其他接口时,浏览器会自动将sessionId放在请求头中的Cookie中.后台会自动识别sessionId,判断是哪个用户发过来的请求. 但是在移动端,浏览器没有实现这个功能,所以我们需要自己手动设置请求的sessionId. 我们可以在登录接口的响应中获取sessionId,如下: //获取到sessionId String responseCooike = response.getFi

Vue 页面权限控制和登陆验证

更多文章 页面权限控制 页面权限控制是什么意思呢? 就是一个网站有不同的角色,比如管理员和普通用户,要求不同的角色能访问的页面是不一样的.如果一个页面,有角色越权访问,这时就得做出限制了. Vue 动态添加路由及生成菜单这是我写过的一篇文章, 通过动态添加路由和菜单来做控制,不能访问的页面不添加到路由表里,这是其中一种办法. 另一种办法就是所有的页面都在路由表里,只是在访问的时候要判断一下角色权限.如果有权限就让访问,没有权限就拒绝,跳转到 404 页面. 思路: 在每一个路由的 meta 属性

Sql Server来龙去脉系列 必须知道的权限控制基础篇

题外话:最近看到各种吐槽.NET怎么落寞..NET怎么不行了..NET工资低的帖子.我也吐槽一句:一个程序猿的自身价值不是由他选择了哪一门技术来决定,而是由他自身能创造出什么价值来决定. 在进入本篇内容之前,这里有几个问题: 1.一般程序猿都知道怎样创建.修改.登录账号,但知不知道登陆账号存储在哪个表或者视图? 2.数据库中其实存在登录账号和用户两个概念,你能解释清楚这两个概念吗? 3.对于一个登录账号,我们可以为他设置哪些权限? 4.你清不清楚数据库信息存储在哪些表或试图? 5.我们可以给登录

基于Vue实现后台系统权限控制

原文地址:http://refined-x.com/2017/08/29/基于Vue实现后台系统权限控制/,转载请注明出处. 用Vue/React这类双向绑定框架做后台系统再适合不过,后台系统相比普通前端项目除了数据交互更频繁以外,还有一个特别的需求就是对用户的权限控制,那么如何在一个Vue应用中实现权限控制呢?下面是我的一点经验. 权限控制是什么 在权限的世界里服务端提供的一切都是资源,资源可以由请求方法+请求地址来描述,权限是对特定资源的访问许可,所谓权限控制,也就是确保用户只能访问到被分配

Vue 实现前端权限控制

为什么做前端权限控制 前端权限控制并不是新生事物,早在后端 MVC 时代,web 系统中就已经普遍存在对按钮和菜单的显示 / 隐藏控制,只不过当时它们是由后端程序员在 jsp 或者 php 模板中实现的. 随着前后端分离架构的流行,前后端以接口为界实现开发解耦,权限控制也一分为二,前端权限控制的所有权才真正回到了前端. 可能有的同学会想,前后端分别做一套控制,是不是将事情复杂化了,而且从根本上讲前端没有秘密,后端才是权限的关键,那是不是只在后端做控制就可以了. 对于这个问题我们首先应该明确,前后

Linux学习总结(14)——Linux权限控制

linux中,权限的学习是必不可少的,不论是作为一名运维工程师或者是单一的管理者,学习好linux中的权限控制,你就可以保护好自己的隐私同时规划好你所管理的一切. 权限的学习是很多的,不要认为自己已经把自己的隐私保护的很好,漏洞总是有的,侧面的攻击往往是难以防守的.所以大家跟我一起学习一下基础的权限控制,在后面也会有更多关于权限控制的知识点分享出来.谢谢各位的关注和支持! 开班第九天: 今天的课程大纲: linux系统中文件目录的基本权限控制 如何来修改默认的生成权限 三种特殊的权限(s,s,t