当前位置: 首页 > 知识库问答 >
问题:

为什么Cakephp中的简单身份验证需要验证电子邮件?

璩浩广
2023-03-14

我正在Cakephp应用程序中实现身份验证。

在该应用程序中,我按照以下教程开始实现身份验证:简单身份验证和授权应用程序,但此教程需要发送验证电子邮件,不知道为什么。这是我的代码:

用户模型:

<?php
App::uses('AppModel', 'Model');
App::uses('AuthComponent', 'Controller/Component');
/**
 * User Model
 *
 */
class User extends AppModel {

/**
 * Display field
 *
 * @var string
 */
    public $displayField = 'username';

/**
 * Validation rules
 *
 * @var array
 */
    public $validate = array(
        'username' => array(
            'notempty' => array(
                'rule' => array('notempty'),
                //'message' => 'Your custom message here',
                //'allowEmpty' => false,
                //'required' => false,
                //'last' => false, // Stop validation after this rule
                //'on' => 'create', // Limit validation to 'create' or 'update' operations
            ),
        ),
        'password' => array(
            'notempty' => array(
                'rule' => array('notempty'),
                //'message' => 'Your custom message here',
                //'allowEmpty' => false,
                //'required' => false,
                //'last' => false, // Stop validation after this rule
                //'on' => 'create', // Limit validation to 'create' or 'update' operations
            ),
        ),
    );

    public function beforeSave($options = array()) {
        if (isset($this->data[$this->alias]['password'])) {
            $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
        }
        return true;
    }
}

应用控制器

class AppController extends Controller {
    public $layout = 'bootstrap';

    public $helpers = array(
            'Session',
            'Html' => array('className' => 'TwitterBootstrap.BootstrapHtml'),
            'Form' => array('className' => 'TwitterBootstrap.BootstrapForm'),
            'Paginator' => array('className' => 'TwitterBootstrap.BootstrapPaginator'),
            'Time',
            'Js'
    );

    public $components = array(
        'Session',
        'Auth' => array(
            'loginRedirect' => array('controller' => 'reports', 'action' => 'index'),
            'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home')
        )
    );


}

用户控制器

<?php
App::uses('AppController', 'Controller');
/**
 * Users Controller
 *
 * @property User $User
 */
class UsersController extends AppController {

/**
 *  Layout
 *
 * @var string
 */
    public $layout = 'bootstrap';

/**
 * Helpers
 *
 * @var array
 */
    public $helpers = array('TwitterBootstrap.BootstrapHtml', 'TwitterBootstrap.BootstrapForm', 'TwitterBootstrap.BootstrapPaginator');
/**
 * Components
 *
 * @var array
 */
    public $components = array('Session');

    public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('add', 'logout');
        }


        public function login() {
            if ($this->request->is('post')) {
            if ($this->Auth->login()) {
                $this->redirect($this->Auth->redirect());
            } else {
                $this->Session->setFlash(__('Invalid username or password, try again'));
            }
            }
    }

public function logout() {
    $this->redirect($this->Auth->logout());
}
/**
 * index method
 *
 * @return void
 */
    public function index() {
        $this->User->recursive = 0;
        $this->set('users', $this->paginate());
    }

/**
 * view method
 *
 * @param string $id
 * @return void
 */
    public function view($id = null) {
        $this->User->id = $id;
        if (!$this->User->exists()) {
            throw new NotFoundException(__('Invalid %s', __('user')));
        }
        $this->set('user', $this->User->read(null, $id));
    }

/**
 * add method
 *
 * @return void
 */
    public function add() {
        if ($this->request->is('post')) {
            $this->User->create();
            if ($this->User->save($this->request->data)) {
                $this->Session->setFlash(
                    __('The %s has been saved', __('user')),
                    'alert',
                    array(
                        'plugin' => 'TwitterBootstrap',
                        'class' => 'alert-success'
                    )
                );
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(
                    __('The %s could not be saved. Please, try again.', __('user')),
                    'alert',
                    array(
                        'plugin' => 'TwitterBootstrap',
                        'class' => 'alert-error'
                    )
                );
            }
        }
    }

/**
 * edit method
 *
 * @param string $id
 * @return void
 */
    public function edit($id = null) {
        $this->User->id = $id;
        if (!$this->User->exists()) {
            throw new NotFoundException(__('Invalid %s', __('user')));
        }
        if ($this->request->is('post') || $this->request->is('put')) {
            if ($this->User->save($this->request->data)) {
                $this->Session->setFlash(
                    __('The %s has been saved', __('user')),
                    'alert',
                    array(
                        'plugin' => 'TwitterBootstrap',
                        'class' => 'alert-success'
                    )
                );
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(
                    __('The %s could not be saved. Please, try again.', __('user')),
                    'alert',
                    array(
                        'plugin' => 'TwitterBootstrap',
                        'class' => 'alert-error'
                    )
                );
            }
        } else {
            $this->request->data = $this->User->read(null, $id);
        }
    }

/**
 * delete method
 *
 * @param string $id
 * @return void
 */
    public function delete($id = null) {
        if (!$this->request->is('post')) {
            throw new MethodNotAllowedException();
        }
        $this->User->id = $id;
        if (!$this->User->exists()) {
            throw new NotFoundException(__('Invalid %s', __('user')));
        }
        if ($this->User->delete()) {
            $this->Session->setFlash(
                __('The %s deleted', __('user')),
                'alert',
                array(
                    'plugin' => 'TwitterBootstrap',
                    'class' => 'alert-success'
                )
            );
            $this->redirect(array('action' => 'index'));
        }
        $this->Session->setFlash(
            __('The %s was not deleted', __('user')),
            'alert',
            array(
                'plugin' => 'TwitterBootstrap',
                'class' => 'alert-error'
            )
        );
        $this->redirect(array('action' => 'index'));
    }
}

表结构:

id          int(10)
username    varchar(50)
password    varchar(50)
email           varchar(60) 
email_verified  varchar(70
email_token_expires     date
slug            varchar(40)
created     datetime
modified    datetime

此解决方案需要电子邮件验证,但我想禁用电子邮件验证。怎样基本上,我需要对上述代码进行哪些更改才能拥有具有以下功能的简单身份验证系统:

  • 无需访问控制

共有1个答案

戚飞虎
2023-03-14

我想我做错了什么。我有用户插件位于Plugins目录中

故事寓意:如果蛋糕没有按照它应该的方式运行,它会因为插件而运行

 类似资料:
  • 如何使用firebase中的验证电子邮件验证使用电子邮件和密码登录的用户?这背后的逻辑是如何工作的,它在代码中会是什么样子? 解决方案/帮助:对于那些仍在寻找答案的人,我找到了这篇文章 堆栈溢出 帖子

  • 我也不会得到一个错误,如果我登录我的电子邮件和密码没有验证电子邮件。 非常感谢你事先的帮助。

  • 在本章中,我们将向您展示如何使用Firebase电子邮件/密码身份验证。 创建用户 要对用户进行身份验证,我们可以使用createUserWithEmailAndPassword(email, password)方法。 例子 (Example) 让我们考虑以下示例。 var email = "myemail@email.com"; var password = "mypassword"; fire

  • 电子邮件验证+电子邮件/密码验证的使用不适用于在用户开始使用服务之前绝对需要电子邮件验证的服务。 让我用Google sign in First的一个例子来解释。 首先,用户登录他们的Google帐户(比如电子邮件是),并授权您的应用程序。然后使用通过它接收到的令牌创建一个凭据,并与Firebase交换这些令牌以将用户登录到Firebase。用户需要存在于Firebase中,您才能使用Fireba

  • 情况 我想为我的web应用程序使用Azure B2C身份验证服务。但是,我希望应用程序管理员限制对某些电子邮件或域的访问,例如白名单,如下所示: tom1@abc.com tom2@def.com *@alphabet.com 因此,只有前两封电子邮件和任何以“alphabet.com”结尾的电子邮件才能访问该网站。 问题 我已经实现了所有功能,并且工作正常,但是我正在努力获取经过身份验证的用户的