前提・実現したいこと
CakePHP3.8でAuthComponentで認証機能を付けようとしています。その際、passwordキーはdefaultのpassordHasherを使用し、usernameキーはSecurity::encryptで暗号化した物を使用したいと考えています。
発生している問題・エラーメッセージ
実装方法が分かりません。
以下URLの方法を参考にしましたが、実装出来なかったということもあり、解決できませんでした。
CakePHP3のAuthComponentのusernameキー値を暗号化していると認証に失敗してしまいます。(平文だとうまくいきます)
https://teratail.com/questions/130171
該当のソースコード
AppController.php
public function initialize() { parent::initialize(); $this->loadComponent('RequestHandler', [ 'enableBeforeRedirect' => false, ]); $this->loadComponent('Flash'); $this->loadComponent('Auth', [ 'loginAction' => [ 'controller' => 'Login', 'action' => 'login' ], 'loginRedirect' => [ 'controller' => 'Top', 'action' => 'index' ], 'logoutRedirect' => [ 'controller' => 'Login', 'action' => 'login' ], 'authenticate' => [ 'Form' => [ 'userModel' => 'Users', 'fields' => [ 'username' => 'login_id', 'password' => 'password' ], 'finder' => 'auth' ] ], 'prefix' => 'user', 'unauthorizedRedirect' => $this->referer(), 'storage' => ['className' => 'Session', 'key' => 'Auth.User'], 'authError' => __('セッションが切れました。もう1度ログインしてください。') ]); /* * Enable the following component for recommended CakePHP security settings. * see https://book.cakephp.org/3.0/en/controllers/components/security.html */ //$this->loadComponent('Security'); }
LoginController.php
<?php namespace App\Controller; use Cake\ORM\TableRegistry; use Cake\Auth\DefaultPasswordHasher; use \Exception; use App\Controller\AppController; use Cake\Event\Event; use Cake\Utility\Security; use Cake\Core\Configure; use Cake\Core\Configure\Engine\PhpConfig; class LoginController extends AppController { public function beforeFilter(Event $event) { parent::initialize(); $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()); } else{ $this->Flash->error(__('ログインIDまたは、パスワードが違います')); } } } public function logout() { $this->request->session()->destroy(); $this->Flash->success('ログアウトしました'); return $this->redirect($this->Auth->logout()); } } ?>
試したこと
CakePHP3のAuthComponentのusernameキー値を暗号化していると認証に失敗してしまいます。(平文だとうまくいきます)
https://teratail.com/questions/130171
補足情報(FW/ツールのバージョンなど)
cakephp3.7
回答1件
あなたの回答
tips
プレビュー