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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

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

Q&A

解決済

1回答

780閲覧

【CakePHP3】AuthComponentのallowが使えない

en2019joy

総合スコア13

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

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

0グッド

0クリップ

投稿2019/03/14 07:41

前提・実現したいこと

CakePHP3で認証機能を実装したいです。

https://book.cakephp.org/3.0/ja/tutorials-and-examples/cms/authentication.html

を参考に進めています。

該当のソースコード

PHP

1// src/Controller/AppController.php の中で 2namespace App\Controller; 3 4use Cake\Controller\Controller; 5 6class AppController extends Controller 7{ 8 public function initialize() 9 { 10 // 既存のコード 11 12 $this->loadComponent('Auth', [ 13 'authenticate' => [ 14 'Form' => [ 15 'fields' => [ 16 'username' => 'email', 17 'password' => 'password' 18 ] 19 ] 20 ], 21 'loginAction' => [ 22 'controller' => 'Users', 23 'action' => 'login' 24 ], 25 // コントローラーで isAuthorized を使用します 26 'authorize' => ['Controller'], 27 // 未認証の場合、直前のページに戻します 28 'unauthorizedRedirect' => $this->referer() 29 ]); 30 31 // display アクションを許可して、PagesController が引き続き 32 // 動作するようにします。また、読み取り専用のアクションを有効にします。 33 $this->Auth->allow(['display', 'view', 'index']); 34 } 35}

発生している問題・エラーメッセージ

$this->Auth->allow(['display', 'view', 'index']);
の行でエラーになっています。

Call to undefined method App\Controller\Component\AuthComponent::allow()

疑問点

AuthComponent::allow がないから呼べないというエラーであることは分かるのですが

https://book.cakephp.org/3.0/ja/controllers/components/authentication.html#

を見る限り、AuthComponentはこちらで実装しなくても
すでにallowの機能があるように思われます。

AuthComponentが読み込めていないのか?
と考え、以下のコード(config)を試したところ

PHP

1// 基本的な設定 2$this->Auth->config('authorize', ['Controller']);

エラー(Call to undefined method App\Controller\Component\AuthComponent::config())にはならなかったため
AuthComponentは読み込めていると考えました。

という事は、
AuthComponentで「allowの機能を使うよ」と定義する必要があるのか?
と考えたのですが、
その方法が分かりませんでした。

allowだけでなくdenyもエラーになります。

AuthComponentの機能を使うために必要な記述などがあれば
教えてください。

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

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

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

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

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

guest

回答1

0

自己解決

私のAuthComponent.phpは以下のようになっていました。

PHP

1<?php 2namespace App\Controller\Component; 3 4use Cake\Controller\Component; 5use Cake\Controller\ComponentRegistry; 6 7/** 8 * Auth component 9 */ 10class AuthComponent extends Component 11{ 12 13 /** 14 * Default configuration. 15 * 16 * @var array 17 */ 18 protected $_defaultConfig = []; 19} 20

https://api.cakephp.org/3.7/source-class-Cake.Controller.Component.AuthComponent.html#30-1031

こちらを使用したところ
allowのエラーは出なくなりました。

投稿2019/03/14 08:10

en2019joy

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問