我正在尝试使用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());
}
}
答案 0 :(得分:1)
问题可能与您的数据库结构有关。
首先是一个主题,但是如果你从头开始你的项目,你应该只使用一个表(users
)来存储所有用户,并将它们链接到另一个表(groups
)赋予他们不同的权利。它可以是group_id
表中的字段users
的直接链接(以后允许您使用核心ACL组件),或者与表users_groups
的多对多关系在users
和groups
之间。
也就是说,Cake无法理解开箱即用:您在admin_users
和admin_groups
“group_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());
}
}
?>