在我的控制器中,我通过在admin_
前面加上函数来限制访问,然后让AppController isAuthorized()
函数检查用户是否是管理员。有没有办法用页面(来自PageController)来做到这一点?我们创建了一个管理员主页(如仪表板),用户无法查看他们是否未登录,但非管理员用户可以查看。我无法弄清楚如何防止这种情况。
答案 0 :(得分:1)
你对网页的意思是什么?由您的webroot中的PagesController或 .htm(l)文件提供的静态内容?
如果你的情况是第一件事,你可以为Pages Controller实现这个逻辑。 如果它是第二个 - 请求根本不通过CakePHP(或任何其他服务器端脚本),所以不能通过Cake控制对它的访问。
如果您的情况不同,请完善您的问题,我很乐意为您提供帮助。
正如评论所暗示你处于No:1的情况。在PagesController的类声明中,它说:
class PagesController extends AppController {
这意味着您可以在AppController中使用任何扩展AppController的类中的任何逻辑。因此,您可以在PagesController中使用isAuthorized()
。
您需要做的就是创建一个名称与“管理仪表板视图”相同的方法,并且只允许管理员访问它。或者只是检查用户角色。
答案 1 :(得分:1)
假设第一个参数是请求的页面,您可以使用以下语句捕获它:
$this->request->pass[0];
你可以使用isAuthorized函数来解决你做这样的问题......
public function isAuthorized()
{
$page = strtolower($this->request->pass[0]);
if ($page = 'admin_page')
{
if ( $this->Auth->user('Role.role_field') == 'Admin' )
{
return TRUE;
}
else
{
return FALSE;
}
}
else
{
// This will authorize users for the other pages
return TRUE;
}
}
希望这会有所帮助。总是检查CookBook:有时您需要检查旧书籍以找到您真正需要的内容。快乐的编码!