久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

在 CakePHP 3 上登錄 [ Auth->identify() ] 始終為 fal

Login [ Auth-gt;identify() ] always false on CakePHP 3(在 CakePHP 3 上登錄 [ Auth-identify() ] 始終為 false)
本文介紹了在 CakePHP 3 上登錄 [ Auth->identify() ] 始終為 false的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

在使用 CakePHP 2 一段時間后,我開始使用 CakePHP 3,但在創建身份驗證登錄時遇到了麻煩.

新的身份驗證函數 $this->Auth->identify() 總是返回 false.

在數據庫上,密碼加密完美,查詢誰帶用戶也可以.

我的代碼:

應用控制器:

<代碼>[...]類 AppController 擴展控制器{公共函數初始化(){$this->loadComponent('Flash');$this->loadComponent('Auth', ['登錄重定向' =>['控制器' =>'行政','動作' =>'指數'],'注銷重定向' =>['控制器' =>'頁面','動作' =>'展示']]);}公共函數 beforeFilter(Event $event){$this->Auth->allow(['display']);}}

用戶控制器:

<代碼>[...]類 UsersController 擴展了 AppController{公共函數 beforeFilter(Event $event){parent::beforeFilter($event);$this->Auth->allow(['logout']);}[...]公共函數登錄(){如果 ($this->request->is('post')) {$user = $this->Auth->identify();如果($用戶){$this->Auth->setUser($user);返回 $this->redirect($this->Auth->redirectUrl());}$this->Flash->error(__('用戶名或密碼無效,再試一次'));}}[...]

用戶(模型實體):

hash($password);}}

查看:

<?= $this->Flash->render('auth') ?><?= $this->Form->create() ?><字段集><legend><?= __('請輸入您的用戶名和密碼') ?></legend><?= $this->Form->input('username') ?><?= $this->Form->input('password') ?></fieldset><?= $this->Form->button(__('Login'));?><?= $this->Form->end() ?>

解決方案

CakePHP3 默認使用與 2 不同的哈希算法(bcrypt vs. SHA1),因此您需要使密碼長度更長.將您的密碼字段更改為 VARCHAR(255) 以確保安全.

當 CakePHP 3 嘗試從 this->Auth->identify() 與數據庫中的散列密碼識別內存中的散列密碼時,它永遠不會匹配,因為缺少某些字符.更改為 255 是不必要的,但如果將來使用更安全的散列,則可以幫助將來證明.建議使用 255,因為字符數可以存儲在一個字節中.

I started using CakePHP 3 after a time using CakePHP 2 and I am having troubles to create the authentication login.

The new auth function $this->Auth->identify() always return false.

On the database, the password are encrypted perfect and the query who takes the user it's ok too.

My code:

AppController:

[...]
class AppController extends Controller{
    public function initialize(){
        $this->loadComponent('Flash');
        $this->loadComponent('Auth', [
            'loginRedirect' => [
                'controller' => 'Admin',
                'action' => 'index'
            ],
            'logoutRedirect' => [
                'controller' => 'Pages',
                'action' => 'display'
            ]
        ]);
    }

    public function beforeFilter(Event $event)
    {
        $this->Auth->allow(['display']);
    }
}

UserController:

[...]
class UsersController extends AppController{
    public function beforeFilter(Event $event)
    {
    parent::beforeFilter($event);
    $this->Auth->allow(['logout']);
    }
[...]
    public function login()
    {
        if ($this->request->is('post')) {
            $user = $this->Auth->identify();
            if ($user) {
                $this->Auth->setUser($user);
                return $this->redirect($this->Auth->redirectUrl());
            }
            $this->Flash->error(__('Invalid username or password, try again'));
        }
    }
[...]

User (Model Entity):

<?php
namespace AppModelEntity;

use CakeAuthDefaultPasswordHasher;
use CakeORMEntity;

class User extends Entity{
    protected $_accessible = [*];
    protected function _setPassword($password){
        return (new DefaultPasswordHasher)->hash($password);
    }
}

View:

<div class="users form">
<?= $this->Flash->render('auth') ?>
<?= $this->Form->create() ?>
    <fieldset>
        <legend><?= __('Please enter your username and password') ?></legend>
        <?= $this->Form->input('username') ?>
        <?= $this->Form->input('password') ?>
    </fieldset>
<?= $this->Form->button(__('Login')); ?>
<?= $this->Form->end() ?>
</div>

解決方案

CakePHP3 uses a different hashing algorithm by default than 2 (bcrypt vs. SHA1), so you need to make your password length longer. Change your password field to VARCHAR(255) to be safe.

When CakePHP 3 tries to identify your in-memory hashed password from this->Auth->identify() vs. the hashed password in the database, it will never match because some characters are missing. Changing to 255 is more than needed, but can help future proof if an even more secure hash is used in the future. 255 is recommended because the the character count can be stored in one byte.

這篇關于在 CakePHP 3 上登錄 [ Auth->identify() ] 始終為 false的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Cannot use #39;Object as class name as it is reserved Cake 2.2.x(不能使用 Object 作為類名,因為它是保留的 Cake 2.2.x)
Session is lost after an OAuth redirect(OAuth 重定向后會話丟失)
Pagination Sort in Cakephp 3.x(Cakephp 3.x 中的分頁排序)
CakePHP Shared core for multiple apps(CakePHP 多個應用程序的共享核心)
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 87 bytes)(致命錯誤:允許的內存大小為 134217728 字節已用盡(嘗試分配 87 字節))
How to get complete current url for Cakephp(如何獲取 Cakephp 的完整當前 url)
主站蜘蛛池模板: 在线观看国产wwwa级羞羞视频 | 日韩欧美中文 | 国产日产精品一区二区三区四区 | 一区二区视频在线 | 日韩在线免费视频 | 欧美视频一区二区三区 | 亚洲欧美一区二区三区在线 | 久久久精品久久 | www.日本国产 | 亚洲国产视频一区二区 | 欧美国产日韩在线观看 | 亚洲精品一区二区 | 久久精选| 欧美视频免费在线观看 | 在线看成人av | 精品国产乱码久久久久久丨区2区 | 国产精品视频免费播放 | 亚洲精品一区二区网址 | 超黄毛片 | 日韩精品一区二区三区在线播放 | 亚洲一区二区三区免费观看 | 黑人中文字幕一区二区三区 | 中文字幕日韩在线观看 | 亚洲一区在线日韩在线深爱 | 日韩 欧美 综合 | 亚洲成人二区 | 亚洲精品一区二区三区中文字幕 | 亚洲高清免费视频 | 狠狠操狠狠干 | 极品粉嫩国产48尤物在线播放 | 久久6视频 | 米奇狠狠鲁 | 欧美精品一区二区三区四区五区 | av特级毛片 | 亚洲美乳中文字幕 | 欧美日一区二区 | 99热在线观看精品 | 国产一区二区在线播放 | 国产精品亚洲一区二区三区在线 | 天堂在线免费视频 | av手机在线播放 |