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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

5617閲覧

Laravel 5.3 認証のカラムを変更したい。

TeraMelos

総合スコア6

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

1クリップ

投稿2017/01/27 09:58

###Laravel 5.3の認証で使用するカラム名を変更したい。

Laravel 5.3で既存のDBで認証を与える機能を作ろうとしたのですが、下記の変更を加えても上手く行きません。LaravelとPHPの知識も少ないので、凄く初歩的な事を見落としている可能性もあり、大変恐縮ですが、ご教示頂ければ非常に有難いです。

サーバOS: CentOS 6.8
DB: mysql 5.7.17
テーブル名: users -> admin_user_mst
カラム名: email -> mail_address
passwordカラムは変更なし、パスワードリセット機能、ログイン情報記憶は今回無しです。

###発生している問題・エラーメッセージ
php artisan make:authで作成した諸ファイルやconfigを、
http://qiita.com/LowSE01/items/cd30a9236156f8b15abd
上記に従って変更し、LoginController.phpに、

PHP

1 public function username(){ 2 return 'mail_address'; 3 } 4

上記を記入しAuthenticatesUsers.phpのusername()をオーバーライドして、ログインを行うと、

These credentials do not match our records.

と表示され、ログインページにリダイレクトされてしまいます。

Laravel Debugbarで発行されたクエリを見ると、

SQL

1select * from `admin_user_mst` where `mail_address` = 'gesakuzammai@akutagawa.co.jp' limit 1 27.7ms 3(自前で用意したダミーデータです)

となり、確かに指定したテーブル、カラムが指定され、パスワードも間違いがないものを入れているのですが、ログイン後のview(home.blade.php)が表示されません。

###該当のソースコード

PHP

1{!-- Bladeテンプレートのフォーム部分は以下の通りです。 --} 2<form class="form-horizontal" role="form" method="POST" action="{{ url('/login') }}"> 3{{ csrf_field() }} 4 <div class="form-group{{ $errors->has('mail_address') ? ' has-error' : '' }}"> 5 <label for="mail_address" class="col-md-4 control-label">メールアドレス</label> 6 <div class="col-md-6"> 7 <input id="mail_address" type="mail_address" class="form-control" name="mail_address" value="{{ old('mail_address') }}" required autofocus> 8 @if ($errors->has('mail_address')) 9 <span class="help-block"> 10 <strong>{{ $errors->first('mail_address') }}</strong> 11 </span> 12 @endif 13 </div> <!-- column --> 14 </div> <!-- form-group --> 15 <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}"> 16 <label for="password" class="col-md-4 control-label">パスワード</label> 17 <div class="col-md-6"> 18 <input id="password" type="password" class="form-control" name="password" required> 19 @if ($errors->has('password')) 20 <span class="help-block"> 21 <strong>{{ $errors->first('password') }}</strong> 22 </span> 23 @endif 24 </div> 25 </div> 26 <div class="form-group"> 27 <div class="col-md-8 col-md-offset-4"> 28 <button type="submit" name="login" value="login" class="btn btn-primary"> 29 ログイン 30 </button> 31 </div> 32 </div> 33</form>

###試したこと
他にも、公式ドキュメントReadouble 5.3の「認証」ページ、「自前のユーザ認証」等も試したのですが上手く行きません。
大変お手数ですが、回答頂けると非常に助かります。何卒宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

自己解決

自己解決しました。

Laravelの基本的なログイン機能でログインを実行した際にパスワードを暗号化して照合していたため、それが異なる暗号形式のためパスワード不一致となってエラーとなっていた様です。
admin_user_mstに新しいユーザを追加する際に、

//AdminUserController.php use Illuminate\Support\Facades\Hash; use App\AdminUser; //中略 $inputs = /Request->all(); $inputs['password'] = Hash::make($inputs['password']); AdminUser::create($inputs);

とすることで、無事認証が通る様になりました。

正直酷く恥ずかしい質問を投げてしまったので消去したいですが、同じ様な酷い方法でプロジェクトを開始せざるを得ない方のために残しておきます。見て下さった方にも御礼申し上げます。

(追記)ログアウトをリメンバートークン無しで実装する
無事ログインが出来てさぁ作るぞ!と意気込んでいたのも束の間、ログアウトを実行した際にエラーがでました。私が認証に使おうとしているadmin_user_mstテーブルはremember_tokenカラムがないのに、remember_tokenカラムに値を保存するupdate文が発行されてエラーとなっている様です。
そこでググって下記のsetAttributeをオーバーライドすることで解決しました。

//AdminUser.php /** * Overrides the method to ignore the remember token. */ public function setAttribute($key, $value) { $isRememberTokenAttribute = $key == $this->getRememberTokenName(); if (!$isRememberTokenAttribute) { parent::setAttribute($key, $value); } }

以上

投稿2017/01/27 23:53

編集2017/01/28 02:16
TeraMelos

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問