mysql - CakePHP 用户登录功能

标签 mysql database cakephp

我已经烘焙了我的项目,并获得了用于添加、查看、编辑和删除数据库数据的表单。我的数据库包括一个员工表。它包括一个称为访问级别的字段,可以选择“员工”或“管理员”。此外,员工用户名和密码也存储在员工表中。如何创建用户登录功能,以便管理员登录时可以对数据库执行任何操作,而员工则不允许管理员工表?

最佳答案

此问题不受登录方式/登录者的影响,而是与授权有关。

使用 isAuthorized

简单的认证授权为explained in the book .

如果您使用 Controller 授权设置应用程序,则身份验证组件将使用 Controller::isAuthorized 来确定请求是否有效。

只需定义函数 isAuthorized 即可满足您的需求

例如:

class AppController extends Controller {

    public $components = array(
        ...
        'Auth' => array(
            ...
            'authorize' => array('Controller')
        )
    );

    public function isAuthorized($user) {
        if ($user['access_level'] === 'admin') {
            return true;
        }

        return false; // always always default deny
    }
}

上述意味着默认情况下非管理员用户无法访问任何操作。但在你的 Controller 中:

class OthersController extends AppController {

    public function add() {...}

    public function delete() {...}

    public function isAuthorized($user) {
        if ($this->action === 'add')  {
            return true; // Anyone can add
        }

        return parent::isAuthorized($user);
    }
}

这将允许任何授权用户访问其他添加操作。

所以,你可以使用the auth component allow function使匿名用户可以访问操作或 Controller ;并使用 isAuthorized 限制非管理员用户的访问。

关于mysql - CakePHP 用户登录功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23323591/

相关文章:

mysql - 使用父类(super class)表在数据库中建模继承的性能

java - 同时更新特定 db-table-row-column 的最佳做法是什么?

database - 规范化数据库可以有 2 个链接表,将 2 个其他表链接到另一个表中的单个主键吗?

php - 如何启用 dodirectpayment API?

CakePHP:getLastInsertId 方法是否安全

c# - 销售产品数量

mysql - 从 Moleculer Framework 中的 mysql 数据库中的 find 方法获取选择字段

sql - MS SQL 中查询的优先级

cakephp - 在 cakephp 中使用 $this->query 返回插入的 id

php - SQL 查询错误,不确定如何修复