我正在使用cakePHP构建应用程序。我们是否有一种方法可以允许公共用户访问某些页面而无需登录。有一些页面,例如关于我们的整个组织或联系我们页面。是否有一种方法可以避免登录访问,类似于我们如何添加组件或设置布局。
答案 0 :(得分:1)
解决方案是使用Auth组件中的allow方法让用户访问这些页面。
谢谢!
答案 1 :(得分:1)
正如Martin Bean所说,你可以使用ACL。对于一个复杂的网站,这将是我的选择。您无需登录即可访问公共页面。 http://multiheadweighers.co.uk是使用ACL的站点的示例。公共页面背后有一个功能齐全的CMS。
对于一个简单的网站,我允许使用
访问视图操作function beforeFilter() {
parent::beforeFilter;
$this->Auth->allow('view');
}
请参阅:http://book.cakephp.org/view/1257/allow
这真的不是什么大问题 - 尝试一下,你会发现它有多容易。
编辑:
来自@ http://book.cakephp.org/view/1550/Setting-up-permissions
一书现在我们要取出参考资料 到用户的Auth-> allowedActions 和组控制器。然后添加 关注你的帖子和小部件 控制器:
function beforeFilter()
{
parent::beforeFilter();
$this->Auth->allowedActions = array('index', 'view');
}
这将删除我们之前在用户和组控制器上放置的“关闭开关”,并提供对索引的公共访问权限以及查看帖子和窗口小部件控制器中的操作。在AppController :: beforeFilter()中添加以下内容:
$this->Auth->allowedActions = array('display');
这使“显示”动作公开。这将使我们的PagesController :: display()保持公开。这很重要,因为默认路由通常将此操作作为您应用程序的主页。
编辑2:
$user = ($this->Auth->user())?$this->Auth->user():'Anonymous';
if(!$this->Acl->check($user,"{$url}"))
$this->redirect($this->referer()); // or whatever action you want to take.