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

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

ただいまの
回答率

91.35%

  • PHP

    15166questions

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

  • Laravel 5

    929questions

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

  • Sequel Pro

    9questions

    Sequel Proは、Mac OS X向けMySQLフロントエンドです。GUIからのMySQLの操作・管理が可能になります。強力なクエリ編集、多彩なエンコーディングオプションのサポートなど多くの機能を備えています。

Laravel5.5でmake:auth /registerページでユーザー登録が出来ない

解決済

回答 1

投稿 2017/12/04 02:46 ・編集 2017/12/04 05:30

  • 評価
  • クリップ 1
  • VIEW 96

前提・実現したいこと

Mac OS Sierra
Laravel5.5 Homestead
Database mysql
vagrant
virtualbox
Sequel Pro

環境下で、「php artisan make:auth」コマンドを入力して自動生成される
passport.dev/registerのページで、ユーザー登録が出来ないので、DBにSeederを
使わずに、ユーザー登録をしたい。
「Seederを使用して、ダミーデータを作成してGUI Databaseツール:Sequel Proでデータ挿入されているのは確認済み」

※参考ブログや、URL
1.API認証(Passport)機能の動作確認
(この記事のpassport.dev/registerでの認可ではなく、認証(make:auth使用)が実装できない)
http://www.dn-web64.com/archives/web/laravel_passport/

2.Laravel 5.4 の認証機能とそのカスタマイズ
(この記事より、1.API認証(Passport)の為の認証を実装しようと参考にしている)
https://qiita.com/naga3/items/4f3defde59b31a1a797e

3.Laravel5.4でマルチ認証(userとadmin)を実装する方法
https://takahashi-it.com/php/laravel54-multi-auth/#step-1

単純に、auth認証が作りたいだけなのですが、初めて認証機能を実装しようとしている為、何が足らないのか、わからないので何卒教えていただきたいです。

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

挙動は、バリデーションは、min:6にしてUserIDをそれ未満の文字にした場合に、しっかりかかるので
フロントのビューは問題なさそうです。

しかし、2.Laravel 5.4 の認証機能とそのカスタマイズ
(この記事より、1.API認証(Passport)の為の認証を実装しようと参考にしている)
https://qiita.com/naga3/items/4f3defde59b31a1a797e

の記事と全く一緒の編集作業を行っても、データベースに登録されず、/registerに、useridと、emailの値を保持して、
passwordだけ再入力の状態でまたページ遷移されて戻ってくる。

php artisan migrate:fresh --seedで、Seederのテストデータを使用して、Loginコントローラーから、ログインのダミーデータを使用してログインしようとしても、それも出来ない為、Databaseの設定の問題と思われます。

該当のソースコード

/database/migrations/2017_12_01_051211_update_users_table.php
は、2.Laravel 5.4 の認証機能とそのカスタマイズと同様なので、省略
.env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test_business_trip
DB_USERNAME=homestead
DB_PASSWORD=secret
routes/web.php

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

/*
|--------------------------------------------------------------------------
| 1) User 認証不要
|--------------------------------------------------------------------------
*/
Route::get('/', function () { return redirect('/home'); });

/*
|--------------------------------------------------------------------------
| 2) User ログイン後
|--------------------------------------------------------------------------
*/
Route::group(['middleware' => 'auth:user'], function() {
    Route::get('/home', 'HomeController@index')->name('home');
});

/*
|--------------------------------------------------------------------------
| 3) Admin 認証不要
|--------------------------------------------------------------------------
*/
Route::group(['prefix' => 'admin'], function() {
    Route::get('/',         function () { return redirect('/admin/home'); });
    Route::get('login',     'Admin\LoginController@showLoginForm')->name('admin.login');
    Route::post('login',    'Admin\LoginController@login');
});

/*
|--------------------------------------------------------------------------
| 4) Admin ログイン後
|--------------------------------------------------------------------------
*/
Route::group(['prefix' => 'admin', 'middleware' => 'auth:admin'], function() {
    Route::post('logout',   'Admin\LoginController@logout')->name('admin.logout');
    Route::get('home',      'Admin\HomeController@index')->name('admin.home');
});
app/Http/HomeController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return view('home');
    }
}
app/Http/Auth/RegisterController.php
は、2.Laravel 5.4 の認証機能とそのカスタマイズと同様なので、省略
resources/views/auth/register.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">Register</div>

                <div class="panel-body">
                    <form class="form-horizontal" method="POST" action="{{ route('register') }}">
                        {{ csrf_field() }}

                        <div class="form-group{{ $errors->has('userid') ? ' has-error' : '' }}">
                            <label for="userid" class="col-md-4 control-label">User ID</label>

                            <div class="col-md-6">
                                <input id="userid" type="text" class="form-control" name="userid" value="{{ old('userid') }}" required autofocus>

                                @if ($errors->has('userid'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('userid') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
                            <label for="email" class="col-md-4 control-label">E-Mail Address</label>

                            <div class="col-md-6">
                                <input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}" required>

                                @if ($errors->has('email'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('email') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
                            <label for="password" class="col-md-4 control-label">Password</label>

                            <div class="col-md-6">
                                <input id="password" type="password" class="form-control" name="password" required>

                                @if ($errors->has('password'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('password') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group">
                            <label for="password-confirm" class="col-md-4 control-label">Confirm Password</label>

                            <div class="col-md-6">
                                <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
                            </div>
                        </div>

                        <div class="form-group">
                            <div class="col-md-6 col-md-offset-4">
                                <button type="submit" class="btn btn-primary">
                                    Register
                                </button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection
/app/Http/Middleware/RedirectIfAuthenticated.php
は、2.Laravel 5.4 の認証機能とそのカスタマイズと同様なので、省略
app/User.php
は、2.Laravel 5.4 の認証機能とそのカスタマイズと同様なので、省略
MySQL Database test_business_tripデータベースの usersテーブル

CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `userid` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `users_email_unique` (`email`),
  UNIQUE KEY `users_userid_unique` (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

長くなりましたが、以上が添付ソースコードになります。
また必要な情報があれば、随時更新していくので、どうか皆さまお力をお貸しください!!!

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

情報が多すぎるので一度整理しましょう。まずlaravel標準のauth機能を使いたいのであれば、

php artisan make:auth
php artisan migrate


この2つを実行するだけです。他はいりません。実行するとDBにuserテーブルが作成され、そこに情報が登録されると思います。なので

・DBにuserテーブルが存在しているか。
・appフォルダに「User.php」は存在するか。
・envファイルに正しくDBの情報を書き込んでいるか。

この辺りをチェックしてみてください。いじくり過ぎて訳が分からない状態なら、一度全てリセットして上記のコマンドからやり直してみてください。

投稿 2017/12/04 10:30

編集 2017/12/04 10:32

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/04 11:02

    ご回答ありがとうございます!
    サラの状態のLaravel5.5に、php artisan make:auth と php artisan migrate をしてみましたら、問題なく
    make:authの一番シンプルな形は実現できました。
    デフォルトの認証機能は使えました。ありがとうございます!

    しかし、今回はOauth2.0認証をLaravel/PassportでAPIサーバーとして、Laravelを実装するのが、今私がチームの中で担当している作業なので、経験が浅い私には少し厳しいです。

    まずは、マルチ認証(管理ユーザーログインと通常ユーザーログイン)の所までこの質問でたどり着きたいです。どうかお付き合いいただけるとありがたいです。。。><

    キャンセル

  • 2017/12/04 11:09

    自分にこたえられる範囲でしたら、答えます。ただ複雑なログイン機能を作ろうとするならauth機能ではなく最初から自分で作った方が簡単だと思います。auth機能を元に改造していく方法は、laravelのシステムの奥深くに足を踏み入れないといけないので、難しいです。

    キャンセル

  • 2017/12/04 11:14

    >ただ複雑なログイン機能を作ろうとするならauth機能ではなく最初から自分で作った方が簡単だと思います。

    承知しました!
    ありがとうございます。認証機能については、Githubで公開されている他の人が作ったトレイトを元に、実装しようと個人開発の時に、頑張ってみたのですが、全くできなかった苦い経験があります。

    その頃から、経験も少し積んだのでまたチャレンジしてみようと思います。
    また、新しく質問、投稿も近日中にあげるかもしれないので、よろしくお願い致します!

    キャンセル

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

ただいまの回答率

91.35%

関連した質問

同じタグがついた質問を見る

  • PHP

    15166questions

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

  • Laravel 5

    929questions

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

  • Sequel Pro

    9questions

    Sequel Proは、Mac OS X向けMySQLフロントエンドです。GUIからのMySQLの操作・管理が可能になります。強力なクエリ編集、多彩なエンコーディングオプションのサポートなど多くの機能を備えています。