在 CakePHP 中自定义用户注册/登录和角色/权限


Customized User Registration/Login and roles/permissions in CakePHP?

在我的应用程序中,需要进行某些修改。我试图在下面列出它们:

  1. 用户注册:应验证电子邮件。
  2. 用户注册:用户可以选择注册为不同的用户角色。
  3. 用户登录:对各种控制器/操作和视图的访问控制基于登录用户。

我发现有一个用于电子邮件验证的插件,然后有一个用于用户访问控制的 ACL。但我是 Cake 的新手,当然我对本机会话、cookie 和令牌(用于电子邮件验证)感到满意。那么,如果我跳过Auth模块而支持$this->Session并编写一个标记化脚本,那更可取的是什么?除了安全性之外,使用Auth还有哪些优势?

编辑(还有一个问题):在蛋糕PHP中,如果我们使用允许方法:

if($this->Auth->user('roles') == 'usertype1') {
            $this->Auth->allow('index', 'add', 'edit', 'delete');
        }

我可以处理对控制器方法的访问。但是我应该如何在用户表中添加"待处理"列,以便我可以使用身份验证验证用户是挂起还是活动?如果这样做,我只需要写验证电子邮件部分。还是建议仅*使用会话变量"isactive"检查会话,并按照上述原始问题中的要求对方法执行检查?

您可以使用管理员路由(路由前缀)或 ACL 轻松实现所需的功能。您必须使用电子邮件助手的帮助编写电子邮件验证部分。对于你的第二个问题:您可以在数据库中有一个字段显示用户是否处于活动状态。假设它是布尔类型的"活动"。此值将设置为 TRUE 是用户验证他的电子邮件。要仅允许活动用户登录,您可以

$this->Auth->authenticate = array(
            AuthComponent::ALL => array(
                'userModel' => 'User',
                'fields' => array(
                    'username' => 'username',
                    'password' => 'password'
                ),
                'scope' => array(
                    'User.active' => 1,
                )
            ), 'Form'
        );

这样,只有活动才能登录。