【问题标题】:Cakephp v3.0.5 use different model in Component AuthCakephp v3.0.5 在组件验证中使用不同的模型
【发布时间】:2015-08-02 05:33:55
【问题描述】:

我阅读了http://book.cakephp.org/3.0/en/controllers/components/authentication.html 中的所有 cakephp 组件 Auth 文档,但我找不到解决方案 :-(

我正在尝试在组件身份验证中使用名为“Usuarios”的不同模型,并将“用户名”字段更改为“cedula”。这是我在 AppController.php 中的配置:

public function initialize() {

        parent::initialize();
        $this->loadComponent('Flash');
        $this->loadComponent('Auth');


        $this->Auth->config('authenticate', [
            'Basic' => [
                'userModel' => 'Usuarios', 
                'fields' => [
                    'username' => 'cedula', 
                    'password' => 'password']],
            'Form' => ['userModel' => 'Usuarios', 
                'fields' => [
                    'username' => 'cedula', 
                    'password' => 'password']]
]);

但是什么也没发生。没有出现登录表单并且会话已打开。

我做错了什么?

【问题讨论】:

  • 你在 src/Templates/Users 中有 login.ctp,在你的 UsersController 中有 login() 方法吗?
  • 不,mi 登录在 src/Templates/Usuarios 和 UsuariosController 中的 login() 方法。我想在那里而不是在用户中使用它。谢谢!

标签: cakephp cakephp-3.0


【解决方案1】:

将控制器名称与模板目录匹配,将方法与模板匹配。

如果你的控制器是 src/Controllers/Usuarios,方法 login(),那么在 src/Templates/Usuarios/ 你需要有 login.ctp 作为你的视图文件。

如果你有这一切,它应该工作。顺便说一句,如果您使用“密码”作为密码字段,则在配置 Auth 时无需指定;您只需要设置 'username' => 'cedula' 因为您正在更改默认值。

另外,你是否在 beforeFilter() 方法的 $this->Auth->allow() 中设置了什么?

【讨论】:

  • 谢谢 DJ Far。我在 src/Controllers/Usuarios 中有方法 login,在 src/Templates/Usuarios/ 中有 login.ctp。问题是“错误:找不到用户控制器”。不要去 UsuariosController :-(
  • 在你的 src/Model/Table 中,你的表是叫 UsuariosTable 还是 UsersTable?
  • 尝试在浏览器中输入“Usuarios/login”。
  • 错误:找不到用户控制器。 :-(
  • 由于用户对 Auth 来说是特殊的,如果我是你,我只会将用户名称用于模型、视图、控制器。然后在 UsersTable::initialize() $this->table('usuarios') 中将表设置为 'usuarios';如果你真的想在你的 URL 中显示 Usuarios,请在你的 config/routes.php 文件中设置它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
  • 2023-03-05
相关资源
最近更新 更多