Cake PHP Auth错误丢失数据库表。

时间:2012-02-21 05:40:35

标签: php cakephp cakephp-1.3

我正在尝试使用Cake PHP Auth Section在我的项目的蛋糕教程中工作。但它不起作用。

我创建了三个表'admin_users',其中包含字段(id,用户名,密码,group_id,创建,修改),'admin_groups'(id,name,created,modified)和'users'(id,username,password,创建,修改);

我尝试普通用户将被放入用户表,管理员用户位于“admin_users”表中,并通过“admin_groups”将管理员用户分组为管理员端的权限访问权。

当我尝试路径'[rootpath] / users / login'给出错误数据库表'管理员'未找到模型管理员。但我没有为管理员创建一个模型。

在我再次手动创建管理员表后,错误“未找到模型UsersAdmin的数据库表'users_admin'”。这里也没有为UsersAdmin创建一个模型。

在用户控制器中

class UsersController extends AppController {

    var $name = 'Users';
    var $uses = array();
    var $components = array('Auth','Session');


    function login() {
         $this->set('title_for_layout', 'Login');
         /*if ($this->Auth->user()) {
             $this->redirect($this->Auth->redirect());
         }*/
     }

     function logout() {
         $this->redirect($this->Auth->logout());
     }
}

2 个答案:

答案 0 :(得分:1)

问题可能与您的数据库结构有关。

首先是一个主题,但是如果你从头开始你的项目,你应该只使用一个表(users)来存储所有用户,并将它们链接到另一个表(groups)赋予他们不同的权利。它可以是group_id表中的字段users的直接链接(以后允许您使用核心ACL组件),或者与表users_groups的多对多关系在usersgroups之间。

也就是说,Cake无法理解开箱即用:您在admin_usersadmin_groupsgroup_id”之间调用了外键。使用此名称,Cake将尝试查找名为groups的表,而不是admin_groups。如果您想与admin_groups保持一致,则外键名称应为admin_group_id

首先纠正这个问题,这可能会解决你遇到的一些问题。如果您未处于调试模式,您可能还必须更正AdminUser模型以反映此更新并清理缓存。

答案 1 :(得分:0)

试试这样      

var $name = 'Users';
var $layout = 'main';

function beforeFilter(){

   $this->Auth->authenticate = ClassRegistry::init('User');
    parent::beforeFilter(); 
}

function index(){

    $this->set('title_for_layout', 'test site');
}


function login(){   

    Security::setHash('md5');       
    $this->set('title_for_layout', 'test site');

}


function welcome(){

}


function logout(){

    $this->set('title_for_layout', 'test site');

    $this->redirect($this->Auth->logout());
}

 }
 ?>