【问题标题】:admin auth check not working管理员身份验证检查不起作用
【发布时间】:2011-08-06 19:23:47
【问题描述】:

对于我客户的网站,我有一个管理部分——唯一的问题是我的管理路由似乎没有密码保护。我在如何设置用户系统的教程中添加了管理员保护,并在 app_controller.php 中放置了以下代码:

function beforeFilter() {
    // if an admin route is requested and not logged in
    $user = $this->Session->read('User');
    if(isset($this->params['admin']) && $this->params['admin'] && is_null($user)) {
        // set Flash and redirect to login page
        $this->Session->setFlash('You need to be logged in for that action.','default',array('class'=>'flash_bad'));
        $this->redirect(array('controller'=>'users','action'=>'login','admin'=>FALSE));
    }
}

& 在我的 app/config/routes.php 我有这个:

Router::connect('/login', array('controller' => 'users', 'action' => 'login'));  
Router::connect('/admin/logout', array('controller' => 'users', 'action' => 'logout'));

我很确定这是为了保护而遗漏了一些东西。

我仍然可以在不登录的情况下访问其他管理区域,即 theowlhouse.com.au/admin/bookings。

我做错了什么?用户模型的管理页面是唯一受保护的页面。

谢谢:)

【问题讨论】:

标签: cakephp routing admin authentication


【解决方案1】:

您似乎将 prefix routing 与使用 auth component 混淆了。请注意,前缀路由在 1.3 版之前称为“管理员路由”。

您无需使用管理员路由即可使用 auth 组件。让我们从设置 auth 组件开始。在您的应用控制器中,确保将其包含在您的组件数组中:

var $components = array('Auth');

完成此操作后,除非用户已登录,否则用户将被定向到登录页面。要允许匿名用户访问操作,您可以调用 $this->Auth->allow('action name'); 例如,假设您想要允许未经身份验证的用户在您的项目控制器中使用 index() 和 view() 操作,但不能使用 add() 或 edit()。在您的 items_controller.php 中,您将设置 beforeFilter() 来进行调用:

function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow(array(
        'index',
        'view'
    ));
}

【讨论】:

  • 谢谢泰勒,所以我认为我在过滤器之前废弃了另一个?我是否将 admin_ 前缀废弃到管理功能? cakephp 是否已经知道将使用 Users 模型进行身份验证?另外,我看不出你的语法有什么问题,但是当我更改 beforeFilter 时,我收到了一个意外的 T 运算符错误。
  • 正确,你应该替换 beforeFilter。正确,您不需要使用“admin_”前缀。更正 Auth 组件默认使用 User 模型。我已经编辑了上面的代码,因为它缺少 > 和右括号。
  • 感谢您回复我-首先我已将我的 app_controller beforeFilter() 更改为更新的登录身份验证,但是我很好奇我将如何为控制器和一个admin_index ...我可以把它放进去吗?我的问题只在于让登录工作 - 有些事情不正确。这实际上很有趣,但我会在其他地方问。我想一旦我开始工作,你的帮助就会让它顺利进行。谢谢大佬。
猜你喜欢
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
  • 2011-11-30
相关资源
最近更新 更多