所以,我正在学习CakePHP,而我正在做Bookmarker教程。我在登录部分,它正在工作。在本教程中,当您添加Login时,每当您尝试访问其他页面时,您都会被踢到登录页面(localhost / users / login)。
我想知道如何让用户无需登录即可访问特定页面。
答案 0 :(得分:4)
请参阅手册:Making Actions Public
通常情况下,您希望控制器操作完全保持公开状态,或者不要求用户登录。
AuthComponent 是悲观的,默认拒绝访问。
您可以使用 AuthComponent :: allow()将操作标记为公共操作。通过将操作标记为公共,AuthComponent不会检查登录用户,也不会检查授权对象:
// Allow only the view and index actions.
$this->Auth->allow(['view', 'index']);
即使在Bookmarker Tutorial AppController中,您也需要关注这一部分:
public function initialize()
{
$this->loadComponent('Flash');
/* Other code */
$this->Auth->allow(['display']); // Allows the display page without loggin in.
$this->Auth->allow(['display', 'function1', 'function2']); // This will let you access display, function1, function 2 without logging in.
}
答案 1 :(得分:0)
Cakephp使用Auth Component,默认情况下,除登录功能外,所有已定义的操作都只允许登录用户使用。
所以,你可以使用
<?php // replace function1 and function2 below with your function names
$this->Auth->allow(array('function1', 'function2')); ?>
在控制器的beforeFilter函数中。这将允许您在没有登录/身份验证的情况下访问此数组中为此特定控制器定义的函数。