且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在CakePHP中使用Cookie进行身份验证?

更新时间:2022-06-22 09:31:17

由于您的需求听起来与AuthComponent原本打算的设计,你有两个选择。

Since your needs sound outwith AuthComponent's originally intended design you have two options.

首先,如果它真的不符合你的需求,你可以创建和维护非常自己的AuthComponent。通过将 /cake/libs/controller/components/auth.php 复制到 /app/controller/components/auth.php

Firstly, if it really doesn't fit your needs, you could create and maintain your very own AuthComponent. Do this by copying /cake/libs/controller/components/auth.php to /app/controller/components/auth.php.

这将允许您完全重写组件,但缺点是,当您升级蛋糕时,您不会再收到AuthComponent的更新。

This would allow you to rewrite the component completely, but the downside is you will no longer receive updates to AuthComponent when you upgrade cake.

其次,您可以使用以下模式扩展CakePHP中的任何内容:

Secondly, you can extend just about anything in CakePHP using the following pattern:

// save as: /app/controllers/components/app_auth.php
App::import('Component', 'Auth');
class AppAuthComponent extends AuthComponent {
    function identify($user = null, $conditions = null) {
        // do stuff
        return parent::indentify($user, $conditions);
    }
}

..并替换 AppAuthComponent 。

如果您想添加更多的方法参数,请将它们放在API之后,例如:

  • You only need to define the methods you wish to replace.
  • You can run methods from the original AuthComponent (even ones you have redefined) at any point during your methods using parent::...
  • The method arguments should remain in the same order as the original API for consistency.
  • If you wish to add more method arguments, put them after the API ones, eg:

function identify($ user = null,$ conditions = null,$ custom = array()){...}

这种方法允许您进行应用程序特定的自定义,同时仍然使用核心中定义的最新方法。

This approach allows you to make application-specific customisation while still using the latest methods defined in the core where necessary.