CakePHP Auth 组件重定向问题

2023-11-30

我无法让 Auth 组件在 CakePHP 1.2.6 应用程序中执行我想要的重定向。

我有一个出现在所有页面上的登录表单,我想让用户保留在他登录的页面上。例如,如果他正在查看另一个用户的个人资料,我想让他在登录后保留在那里,而不是将他重定向到$this->Auth->loginRedirect行动。另外,关于我的应用程序的另一件事是,我没有“仅经过身份验证的访问”页面,每个页面都可供每个人访问,但如果您登录,您将获得其他功能。

我从阅读中了解到的文档是我需要设置autoRedirect设置为 false 以获取要执行的 login() 函数中的代码:

class UsersController extends AppController {    
    var $name = 'Users';
    var $helpers = array('Html', 'Form','Text');

    function beforeFilter() {
        $this->Auth->autoRedirect = false;
    }

    function login() {
        $this->redirect($this->referer());
    }

    function logout() {
        $this->redirect($this->Auth->logout());
    }

    /* [...] */
}

目前这破坏了我的身份验证。我注意到(从日志中),如果我将重定向保留在登录函数中并设置autoRedirect为 false,密码字段$this->data in the login()函数显示为空。

下面,我发布了 AppController 中与 Auth 组件相关的内容:

public function beforeFilter() {

    $this->Auth->fields = array(
        'username' => 'email',             
        'password' => 'password'            
    );

    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');     
    $this->Auth->loginRedirect = array('controller' => 'usercars', 'action' => 'homepage');

    $this->allowAccess();

    // build wishlist if the user is logged in
    if ($currentUser = $this->Auth->user()) {
        $wishlists = $this->buildWishlist($currentUser);
        $this->set('wishlists', $wishlists);
    }

}

private function allowAccess() {
      if(in_array($this->name, /* all my controller names */)) {
          $this->Auth->allow('*');
      }
}

我似乎无法理解我做错了什么。


添加parent::beforeFilter();在用户控制器中的 beforeFilter 中:

function beforeFilter() {
    $this->Auth->autoRedirect = false;
    parent::beforeFilter();
}

您还可以将重定向替换为用户控制器的登录方法:

$this->redirect($this->Auth->redirect());

Auth->redirect() 返回用户在进入登录页面或 Auth->loginRedirect 之前登陆的 url。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CakePHP Auth 组件重定向问题 的相关文章

随机推荐

  • 我们是否可以更新spark-ml/spark-mllib中的现有模型?

    我们使用 Spark ml 根据现有数据构建模型 新数据每天都会出现 有没有一种方法可以让我们只读取新数据并更新现有模型 而不必每次都读取所有数据并重新训练 这取决于您使用的模型 但对于某些 Spark 来说 它完全按照您的方式执行want
  • 如何通过命令行从当前 APK 屏幕查询 FLAG_SECURE?

    如何查询 Android 应用程序的当前窗口 活动来检查窗旗标志 安全 是否可以使用 ADB 或任何其他命令行工具针对 APK 我的用例是 我想查询设备以查看当前屏幕上是否启用了 FLAG SECURE 我无法访问源代码 我只是使用 APK
  • 使用 hstore 过滤 activeadmin

    我想将 activeadmin 过滤器与 hstore 一起使用 在模型中 我有房间的柱设施 我想做这样的事情 过滤器 设施 as gt 选择 集合 gt proc 房间 all map r r 设施 您只需为 HStore 数据类型创建一
  • APPPATH codeigniter 无法在服务器上运行

    我在 codeigniter 中遇到问题 将其上传到服务器后 我需要库文件夹中的模型中的文件
  • 使用 withCriteria 时限制数据范围

    我目前有以下 3 个域类 用户 groovy class User static hasMany static belongsTo course Course university University 课程 groovy class Co
  • 限制线程池中使用的处理器数量

    有没有办法限制 ThreadPool 对象将使用的处理器数量 根据文档 您不能将工作线程数或 I O 完成线程数设置为小于计算机中处理器数的数字 那么如何限制我的程序不消耗所有处理器呢 经过一些实验 我想我已经做到了 我注意到ThreadP
  • 如果 ListView 中的 ListViewItems 数量发生变化,是否会触发一个事件? (Windows 窗体)

    我想根据我的项目中有多少项目来启用 禁用一些其他控件ListView控制 我找不到任何可以执行此操作的事件 无论是ListView本身或在ListViewItemCollection 也许有一种方法可以通用地监视 C 中的任何集合的更改 我
  • 控制器中的所有 JavaFX FXML 对象均为 null

    我意识到这个问题以前曾被问过 但没有一个解决方案对我有用 我从我的控制器启动一个线程 然后该线程从我的数据库获取一些数据 该线程将数据发送到我在控制器中实现的接口 当我尝试从那里访问我的任何 JavaFX 元素时 出现空指针异常 这是我的控
  • Android 应用 future.usb.usbmanager

    我在购买的新 Android 平板电脑上运行应用程序时遇到一些问题 它可以在我之前的 Android 手机上运行 这是我的 logcat 输出 03 23 16 13 12 250 E AndroidRuntime 12284 FATAL
  • 如何在 C# 中使用 axWindowsMediaPlayer 跳转 X 秒

    我正在使用 axWindowsMediaPlayer 并且已加载视频 但我想跳 X 秒 例如 如果当前时间是视频的 1 分钟 我想跳到 1 分 10 秒 好吧 我找到了我的解决方案 我实际上运行正确 但我没有考虑加载视频所需的时间 具体来说
  • Firestore 对无效写入的计费[重复]

    这个问题在这里已经有答案了 我试图找出 firebase 如何对写入操作进行计费 在账单文档中 我找不到何时计算写入的明确定义 假设我运行一个set查询与原始文档完全相同的数据 这样文档就不会受到影响 这会按写操作计费吗 当我打开控制台运行
  • 将根上下文更改为 tomcat 6 中的其他文件夹

    我想更改已部署的 Web 应用程序的上下文 目前是通过url访问www app mysite com dashboard 但我想把它改成www app mysite com application dashboard 我通过帖子更改了根上下
  • 使用 select2 插件 (v4) 防止重新加载数据

    我在用着select2插件 v4 并使用ajax加载他的选项 如果我第一次打开选择输入 数据将被加载 当我再次打开选择时 会重新加载相同的数据 有什么办法可以防止这种数据 重新加载 我的意思是 如果我只是打开 select2 并且选项之前已
  • Android L(5.0)不会在 eclipse 中搜索“armeabi”或“armeabi-v7a”文件夹中的本机库(UnsatisfiedLinkError)

    我的应用程序使用 2 个本机库 我们称它们为 LibA so 和 LibB so 以前 我的应用程序在 kitkat 操作系统以下运行 没有任何问题 现在 使用 OS 5 0 lollipop 的 Nexus 5 出现 Unsatisfie
  • SQL Server:事务是否锁定其他用户的表?

    当我运行多个查询时 事务是否会锁定我的表 示例 如果另一个用户尝试在我使用事务的同时发送数据 会发生什么 另外 我怎样才能避免这种情况 同时还要确保所有数据已成功插入数据库 Begin Tran Insert into Customers
  • 检查一列中的值是否在另一列的列表中

    我有一个像这样的熊猫数据框 我需要知道是否city出现在列表中citylist 忽略大小写 我尝试过使用apply像这样 但无法找出正确的语法 df apply lambda x x city lower in x citylist 传递参
  • C++ 运算符重载示例

    好吧 我是运算符重载的新手 我发现了这个问题 我不想记录自己 而是更愿意问你 D 关键是 我知道如何进行简单的运算符重载 但我面临着堆栈运算符的问题 我将尝试举一个相对简单的例子 struct dxfdat int a string b h
  • 如何编辑txt文件中间的一行而不覆盖所有内容?

    我编写了一个 python 脚本 它从 txt 文件读取并执行基本任务 例如添加新行 删除和编辑现有行 为了删除和编辑 我使用 readlines 将整个文件作为列表加载 然后使用编辑的列表覆盖文件 这会增加数据丢失的可能性 所以我的问题是
  • 使用 Angular 2 创建 SOAP 客户端 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在寻找一种使用 WSDL 向 Web 服务发送 SOAP 请求的方法 使用 Typescript 2 和 Angular 2 可以做到这一点吗 我看过 Angular 1 的
  • CakePHP Auth 组件重定向问题

    我无法让 Auth 组件在 CakePHP 1 2 6 应用程序中执行我想要的重定向 我有一个出现在所有页面上的登录表单 我想让用户保留在他登录的页面上 例如 如果他正在查看另一个用户的个人资料 我想让他在登录后保留在那里 而不是将他重定向