【问题标题】:cakephp auth component, use two modelscakephp auth 组件,使用两种模式
【发布时间】:2012-08-06 19:28:58
【问题描述】:

我的网站有一个供员工使用的公共部分和供管理员使用的后端。它使用 2 种不同的模型,Employee 和 Admin。

我想使用 Auth 组件进行员工登录和管理员登录。我知道如何设置 Auth 组件以使用默认用户模型以外的模型。但是我可以让身份验证组件使用 2 个模型,一个用于员工身份验证,另一个用于管理员身份验证吗?我正在使用 admin_ 前缀路由。

这可能吗?我进行了搜索,但我只能找到有关如何使 Auth 组件使用除用户模型之外的模型的教程。

请指教!

编辑

我使用单独的登录表单进行管理员登录和员工登录。两者都使用员工控制器,但操作不同。

【问题讨论】:

  • 您如何检查用户是想以员工身份还是管理员身份登录?您是否使用任何类型的单选按钮?
  • @goose ,我也面临这个问题,如果你已经解决了,你应该发布你的解决方案吗?我在等……

标签: cakephp


【解决方案1】:

http://api.cakephp.org/class/auth-component

检查属性验证,你的答案就在那里!

还有更多: http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html。 查看身份验证处理程序!

这是直接来自蛋糕页面的示例

<?php
// Basic setup
$this->Auth->authenticate = array('Form');

// Pass settings in
$this->Auth->authenticate = array(
'Form' => array('userModel' => 'Member'),
'Basic' => array('userModel' => 'Member')
);

只需将其他东西代替 Form 和 Basic 并关联好的模型

【讨论】:

    【解决方案2】:

    考虑到您正在为员工和管理员使用两个单选按钮。然后就可以在登录方法中使用下面的代码了。

     function login()
    {       
        if ($this->request->is('post'))
        {
            $logged_in = false;
            $login_type = $this->request->data['User']['login_type']
            if ($login_type == 'Admin')
            {
                 $this->Auth->authenticate = array('Form' => array('userModel' => 'Admin' ));       
            }
            else //if ($login_type == 'Employee')
            {
                 $this->Auth->authenticate = array('Form' => array('userModel' => 'Employee' ));             
            }
            $this->Auth->constructAuthenticate();
            if ($this->Auth->login())
            {  
                 $logged_in = true;                 
                         /*.... Do what you want............*/
            }
        }
    }
    

    【讨论】:

    • 我没有使用单选按钮来选择登录类型。我为员工和管理员使用单独的登录表单。根据我从您的回答中可以得出的结论,我认为我应该将此逻辑分开并将它们放在正常登录和 admin_login 中。对吗?
    • 当然可以,但是如果您使用两种不同的模型,您还必须使用$this-&gt;Auth-&gt;constructAuthenticate(); 重构您的 Auth 组件。
    • 在两个操作中都放置 $this->Auth->constructAuthenticate() 吗?生病检查并发回结果。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2011-07-31
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多