2010-10-29 69 views
1

我正在使用cakePHP构建应用程序。我们是否有一种方法可以让公共用户在不登录的情况下访问特定页面。关于整个组织或联系我们页面,我们会有几页介绍我们。有没有避免登录访问的方法,类似于我们如何添加组件或设置布局的方法。无需登录即可进行操作/页面

+0

您可以利用ACT的+ AUTH – 2010-10-30 12:00:24

回答

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在用户 和组控制器。然后添加 以下到您的文章和widget 控制器:

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. 
+1

没有ACL用于控制对注册用户的访问权限? ACL如何成为让未注册用户访问公共页面的一部分?它应该由Auth组件完成是不是?你能解释一下ACL如何用于此? – macha 2010-10-29 16:58:49

+0

是的,但这并不意味着一切都必须由ACL控制 - 可以排除。看到我上面的编辑。我遇到了一些粘性的情况,我不得不做一些类似于我的第二次编辑的事情。 – Leo 2010-10-29 17:14:21

+0

ACL和认证一起工作。 – Leo 2010-10-29 17:16:45

1

的解决办法是使用方法允许在验证组件,让用户访问这些页面。

谢谢!

相关问题