我已经烘焙了我的项目,并且已经有了在数据库中添加,查看,编辑和删除数据的表单。我的数据库包含一个employee表。它包括一个称为访问级别的字段,可以选择“staff”或“admin”。员工用户名和密码也存储在employee表中。如何创建用户登录功能,以便管理员登录admin时能够对数据库执行任何操作,而不允许员工管理员工表?
答案 0 :(得分:1)
此问题并未受到如何/谁登录的影响,而是关于授权。
简单的身份验证和授权是explained in the book。
如果使用控制器授权设置应用程序,则auth组件将使用Controller::isAuthorized
来确定请求是否有效。
只需定义功能isAuthorized
以满足您的需求
e.g:
class AppController extends Controller {
public $components = array(
...
'Auth' => array(
...
'authorize' => array('Controller')
)
);
public function isAuthorized($user) {
if ($user['access_level'] === 'admin') {
return true;
}
return false; // always always default deny
}
}
以上意味着默认情况下,非管理员用户无法访问任何操作。但是在你的控制器中:
class OthersController extends AppController {
public function add() {...}
public function delete() {...}
public function isAuthorized($user) {
if ($this->action === 'add') {
return true; // Anyone can add
}
return parent::isAuthorized($user);
}
}
这将允许任何授权用户访问其他添加操作。
因此,您可以使用the auth component allow function使匿名用户可以访问操作或控制器;并使用isAuthorized来限制对非管理员用户的访问。