0

我正在尝试在http://sandbox.andrewcroce.com上的新 CakePHP 1.3 应用程序上使用身份验证插件 Spark Plug 。设置起来很容易,但由于某种原因,当我尝试访问除用户控制器之外的任何东西时,我会遇到重定向循环错误。

该插件成功允许您注册和登录,数据库似乎已正确写入。确认电子邮件已发送,并且验证链接似乎激活了新用户。但是,除了用户控制器之外,我无法访问任何页面或控制器。结果是一个重定向循环,其中重复请求http://sandbox.andrewcroce.com/errors/unauthorized 。

对我来说,这提出了两个问题:如果我成功登录,为什么它试图将我引导到未经授权的页面?为什么它会一直重定向到自己?

我想知道这是否是我在火花塞配置中不了解的配置设置,但评论中没有太多解释这些设置的作用。

任何帮助,将不胜感激。

4

2 回答 2

0

我不确定 Spark Plug 的细节,但是每当您激活 Auth 组件时,您需要确保指定哪些操作允许未经身份验证的用户使用,否则任何对该操作的请求都将被重定向到您的错误操作是。然后,如果不允许您的错误操作,它会抛出一个错误,将您发送到……您猜对了,您的错误操作,一遍又一遍。

在每个控制器中,您的 beforeFilter() 方法中都需要这样的东西:

function beforeFilter() {
    parent::beforeFilter();
    // Allow all actions
    $this->allow(*);
    // Only allow view and index
    $this->allow('view', 'index');
}

如果您不运行该allow()方法,则表示未经身份验证的用户不应使用任何操作。特别是,如果你把allow('unauthorized')你的ErrorsController类,unauthorized动作不会在循环中重定向。

于 2011-11-04T21:05:43.247 回答
0

spark_plug 上有一个名为“user_group_permissions”的表,例如,如果您想访问名为“posts”的控制器和操作“sortBy”(http://localhost/posts/sortby/),那么您需要将该权限添加到像这样的表:

INSERT INTO `user_group_permissions` ( `user_group_id`, `plugin`, `controller`, `action`, `allowed`) VALUES
( 3, '', 'posts', 'sortBy', 1)

对于这种特定情况,user_group_id 编号 3 是“Guest”,换句话说,每个人都可以在控制器中访问该操作

于 2011-12-15T22:17:56.473 回答