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

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

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

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

Q&A

解決済

1回答

3016閲覧

cakephpでログアウト機能を実装する方法を教えて下さい。

gomes_2222

総合スコア90

CakePHP

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

0グッド

1クリップ

投稿2020/05/15 15:40

編集2020/05/15 16:08

前提・実現したいこと

cakephpでログアウト機能を実装したいです。
昨日の実装はできましたが、ボタンを押してログアウト処理を実行し、ログイン画面に戻る方法をアドバイスください。

該当のソースコード

basecontroller

1<?php 2namespace App\Controller; 3 4use App\Controller\AppController; 5use Cake\Auth\DefaultPasswordHasher; 6 7class BaseController extends AppController 8{ 9 10 public function initialize(): void 11 { 12 parent::initialize(); 13 $this->loadComponent('RequestHandler'); 14 $this->loadComponent('Flash'); 15 $this->loadComponent('Auth',[ 16 'authorize' => ['Controller'], 17 'authenticate' => [ 18 'Form' => [ 19 'fields' => [ 20 'username' => 'username', 21 'password' => 'password' 22 ] 23 ] 24 ], 25 'loginRedirect' => [ 26 'controller' =>'User', 27 'action' =>'login' 28 ], 29 'logoutRedirect' => [ 30 'controller' =>'User', 31 'action' =>'logout', 32 ], 33 'authError' => 'ログインしてください', 34 ]); 35 } 36 37 public function login() { 38 if($this->request->isPost()) { 39 $user = $this->Auth->identify(); 40 if(!empty($user)){ 41 $this->Auth->setUser($user); 42 return $this->redirect($this->Auth->redirectUrl()); 43 } 44 $this->Flash->error('間違っています。'); 45 } 46 } 47 48 public function logout() { 49 $this->request->session()->destroy(); 50 return $this->redirect($this->Auth->logout()); 51 } 52}

samplecontoroller

1<?php 2namespace App\Controller; 3 4use App\Controller\AppController; 5use Exception; 6 7class SampleController extends BaseController 8{public function initialize(): void 9 { 10 parent::initialize(); 11 12 $this->set('authuser', $this->Auth->user()); 13 }

index

1<h2>この下にボタン作りたい</h2>

試したこと

index.phpにボタンを実装します。

cakephp

1 <?= $this->Html->link(__('logout'), 2 'http://localhost/???/user/logout',) ?>

これでやったのですがうまくできませんでした。
user/logout
のリンクに繋げればログアウト処理を実行できるので、リンクの繋がったボタンを作ればOKと思いました。そこから先が思いつきません。

補足情報(FW/ツールのバージョンなど)

cakephp4.0

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

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

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

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

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

guest

回答1

0

ベストアンサー

今一度、以下の記事を読まれてはいかがでしょうか?

シンプルな認証と認可のアプリケーション - 4.x

未検証ですが、上記のページと同様に 'action' =>'logout', の後に 'home'などを加えると良いのではないでしょうか?(ログインページに当たるものを書く。)

php

1 'logoutRedirect' => [ 2 'controller' =>'User', 3 'action' =>'logout', 4 'home' 5 ],

投稿2020/05/15 16:18

編集2020/05/15 23:31
Yasumichi

総合スコア1773

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

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

Yasumichi

2020/05/15 23:31

ご指摘ありがとうございます。修正しました。
gomes_2222

2020/06/07 14:40

お二人とも、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問