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

时间:2013-10-18 07:04:51

标签: php cakephp authentication cakephp-2.0

在我的申请中,需要进行某些修改。我想在下面列出它们:

  1. 用户注册:应验证电子邮件。
  2. 用户注册:用户可以选择注册为不同用户 作用。
  3. 用户登录:各种控制器/操作和视图的访问控制 基于登录用户。
  4. 我发现有一个用于电子邮件验证的插件,然后有用于用户访问控制的Acl。但我是Cake的新手,当然我对原生会话,cookie和令牌感到满意(用于电子邮件验证)。那么,更优选的是,如果我跳过Auth模块而不是$this->Session并编写标记化脚本?除安全性之外使用Auth有什么好处?

    修改(还有一个问题): 在cakePHP中,如果我们使用allow方法:

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

    我可以处理对控制器方法的访问。但是我应该如何在users表中添加“pending”列,以便我可以使用Auth验证用户是处于待处理状态还是活动状态?如果这样做,我只需要编写验证邮件部分。或者建议仅使用会话变量“isactive”检查会话*,并按上述原始问题中的要求对方法执行检查?

1 个答案:

答案 0 :(得分:0)

您可以使用Admin routing ( routing prefix)或ACL轻松实现所需的功能。您必须使用电子邮件帮助程序编写电子邮件验证部分。 对于你的第二个问题: 您可以在数据库中显示一个字段,显示用户是否处于活动状态。 让我们说它是布尔类型的“活跃”。此值将设置为TRUE,用户已验证其电子邮件。 要仅允许Active用户登录,您可以

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

这样只有活动才能登录。