3

我正在使用 cakePHP 2.0,并且已经安装了 cakeDC 用户插件。用户插件似乎正在工作,只要我可以登录并被重定向到插件的 UsersController _setupAuth 函数中定义的“/”。

但是,当我想修改它时,我将另一个 stackoverflow 问题中的一些身份验证设置代码添加到我的 AppController beforeFilter 函数中。

问题是,这似乎被忽略了,UsersController 中的 _setupAuth 代码优先。

所以,我的问题是,如何在我的 AppController 中添加自定义重定向控件,而无需更改插件中的代码?

我更困惑的是,我链接到的问题告诉我们在 AppController 中放置一个 isAuthorized 函数,这似乎意味着我必须在 UsersAppController 中删除该函数。

4

2 回答 2

2

这个想法是你通过在你的app.

AuthAppController. 您还需要Auth在项目中包含该组件。

然后在您的AppController::beforeFilter()您可以配置您的特定设置,例如

$this->Auth->loginRedirect = '/';

因此,您链接到的另一个问题是正确的,但您不需要所有设置,只需要您想要覆盖的设置。

如果您使用 Controller 身份验证,我还强烈建议isAuthorized()您向 AppController 添加一个,因为您需要控制谁可以看到什么。不要像另一个问题所说的那样只返回true,因为您没有检查任何不好的角色或登录。

如果您想更改登录操作,您需要在您的“应用程序/控制器”中创建自己的控制器并将其命名为 以外的其他名称Users,我倾向于使用MyUsersController.php此控制器,您需要扩展插件控制器。您将需要包含文件App::uses('Users.UsersController','Controller')或类似文件,然后您的控制器可以

class MyUsersController extends UsersController{
  public function login(){

  }
}

虽然我不需要使用用户插件来执行此操作,所以也许只需尝试配置您的AppController::beforeFilter()第一个,并检查您是否parent::beforeFilter()在顶部调用。

于 2012-12-10T17:29:49.467 回答
1

您是否更改了 routes.php 重定向?这是我的,我禁用了插件路由来引用我自己的控制器 AppUsersController.php

请注意,我使用 /admin/ 前缀。如果您不需要它,请删除路由路径开头的“/admin/”,以及“prefix”和“admin”键表。

Router::connect('/admin/users', array('plugin' => null, 'controller' => 'app_users', 'prefix' => 'admin', 'admin' => true));
Router::connect('/admin/users/index/*', array('plugin' => null, 'controller' => 'app_users', 'prefix' => 'admin', 'admin' => true));
Router::connect('/admin/users/users/:action/*', array('plugin' => null, 'controller' => 'app_users', 'prefix' => 'admin', 'admin' => true));
Router::connect('/admin/users', array('plugin' => null, 'controller' => 'app_users', 'prefix' => 'admin', 'admin' => true));
Router::connect('/users/:action/*', array('admin' => false, 'plugin' => null, 'controller' => 'app_users'));
Router::connect('/login/*', array('plugin' => null, 'controller' => 'app_users', 'action' => 'login'));
Router::connect('/logout/*', array('plugin' => null, 'controller' => 'app_users', 'action' => 'logout'));
Router::connect('/register/*', array('plugin' => null, 'controller' => 'app_users', 'action' => 'add'));
于 2013-04-21T20:00:27.630 回答