質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Q&A

解決済

1回答

10517閲覧

cakephp3でログイン認証(Auth)できない

ponpoko6012

総合スコア18

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

0グッド

1クリップ

投稿2016/02/12 12:27

cakephp3でログイン認証(Auth)を行おうとしているのですが、
必ずログインに失敗してしまいます。
どこがうまく設定できていないのか、アドバイスを頂けないでしょうか?

【環境】
localhost環境
OS:Windows7 Professional 32ビット
CakePHP :v3.2.1
PHP :5.6.15

【登録テーブル】

CREATE TABLE `users` ( `id` int(11) NOT NULL COMMENT 'ユーザーID', `employee_no` varchar(6) NOT NULL COMMENT 'ログインIDとして使用する', `password` varchar(255) NOT NULL COMMENT 'ログインに使用するパスワード', `name` varchar(20) NOT NULL COMMENT '社員の名前', ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

【usersテーブルに登録してあるデータ】
id :1
employee_no :000001
password :test01test01
name :テスト 太郎

【/src/Controller/AppController.php】

public function initialize() { parent::initialize(); $this->loadComponent('RequestHandler'); $this->loadComponent('Flash'); $this->loadComponent('Auth', [ 'authenticate' => [ 'Form' => [ 'fields' => [ 'username' => 'employee_no', 'password' => 'password' ] ] ], 'loginAction' => [ 'controller' => 'Users', 'action' => 'login' ], 'loginRedirect' => [ 'controller' => 'Users', 'action' => 'index' ], 'logoutRedirect' => [ 'controller' => 'Users', 'action' => 'login', ] ]); }

【/src/Controller/UsersController.php】

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('ログインエラーです'); } } }

【/src/Template/Users/login.ctp】

<h1>Login</h1> <?= $this->Form->create() ?> <?= $this->Form->input('employee_no') ?> <?= $this->Form->input('password') ?> <?= $this->Form->button('Login') ?> <?= $this->Form->end() ?>

これでログイン画面にて
employee_no :000001
password :test01test01
を入力すると「ログインエラーです」が表示され、ログインができません。

パスワードのハッシュ化などは特にいじっていないのですが、
そこが怪しいのかなと思い、AppController.phpとlogin.ctpのpasswordの部分を
外しても同様の結果となってしまいました。

申し訳ありませんが、ご教授のほどよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

パスワードハッシュ化処理を行ったうえで登録したユーザーであれば認証ができました。
【/src/Model/Entity/User.php】

protected function _setPassword($password) { return (new DefaultPasswordHasher)->hash($password); }

投稿2016/02/15 06:19

ponpoko6012

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問