没有登录的CakePHP访问页面

时间:2016-10-07 01:45:04

标签: cakephp login access

所以,我正在学习CakePHP,而我正在做Bookmarker教程。我在登录部分,它正在工作。在本教程中,当您添加Login时,每当您尝试访问其他页面时,您都会被踢到登录页面(localhost / users / login)。

我想知道如何让用户无需登录即可访问特定页面。

2 个答案:

答案 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函数中。这将允许您在没有登录/身份验证的情况下访问此数组中为此特定控制器定义的函数。