0

ログインに問題があります。検証エラーが見つからない場合でも、postIndex メソッドの else ステートメント ブロックに移動し、ログイン ページに戻ります。問題が何であり、それを修正するために何を変更する必要があるかについて何か考えはありますか?

ルート.php

<?php    
    Route::get('/', 'HomeController@getGuestIndex');
    Route::controller('login', 'LoginController');
?>

HomeController.php

<?php
    class HomeController extends BaseController {
        public function getGuestIndex()
        {
            return View::make('guests.index');
        }

        public function getAdminIndex()
        {
            return View::make('admin.index');
        }
    }
?>

LoginController.php

<?php
    class LoginController extends BaseController {
        public function getIndex()
        {
            // Check if we are already logged in.
            if (Auth::check()) {
                return Redirect::action('HomeController@getAdminIndex')
                    ->with('message', 'You are already logged in');
            }

            return View::make('guests.login')
                ->with('title', 'Login');
        }

        public function postIndex()
        {
            // Get all the inputs
            $user = array(
                'username' => Input::get('username'),
                'password' => Input::get('password')
            );

            $validation = User::validate($user);

            if ($validation->passes()) {
                // Try to log the user in.
                if (Auth::attempt($user)) {
                    return Redirect::action('HomeController@getAdminIndex')
                        ->with('message', 'You have logged in successfully');
                }

                return Redirect::to('login')
                    ->withErrors($validation)
                    ->withInput(Input::except('password'));         
            } else {
                // Something went wrong.
                return Redirect::back()
                    ->withErrors($validation)
                    ->withInput(Input::except('password'));
            }
        }
    }
?>

BaseModel.php

<?php
    class BaseModel extends Eloquent {
        public static function validate($inputs)
        {
            return Validator::make($inputs, static::$rules);
        }

    }
?>

ユーザー.php

<?php
    use Illuminate\Auth\UserInterface;
    use Illuminate\Auth\Reminders\RemindableInterface;

    class User extends BaseModel implements UserInterface, RemindableInterface {
        protected $table = 'users';
        protected $hidden = array('password');
        protected static $rules = array(
            'username'              => 'required|alpha_dash|min:4',
            'email'                 => 'required|email',
            'password'              => 'required|alpha_num|min:8|confirmed',
            'password_confirmation' => 'required|alpha_num|min:8'
        );

        public function getAuthIdentifier()
        {
            return $this->getKey();
        }

        public function getAuthPassword()
        {
            return $this->password;
        }

        public function getReminderEmail()
        {
            return $this->email;
        }
    }
?>

login.blade.php

@extends('layouts.master')

@section('content')
<h2>Login into your account</h2>

{{ Form::open(array('url' => 'login')) }}
    <p>
        {{ Form::label('username', 'Username') }}
        {{ Form::text('username', Input::old('username')) }}
    </p>

    <p>
        {{ Form::label('password', 'Password') }}
        {{ Form::password('password') }}
    </p>

    <p>
        {{ Form::submit('Login') }}
    </p>

{{ Form::close() }}

<p>{{ $errors->first('username') }}</p>
<p>{{ $errors->first('password') }}</p>
@stop
4

1 に答える 1

2

あなたの質問とスクリプト例に基づいて、検証は失敗しています。

問題は、モデル ベースの検証の実装にある可能性があります。登録ルールでログインを検証しています。

1 組の検証規則がすべての状況に適合するわけではありません。

次の行を login.blade.php に追加すると、追加のエラーが表示されると思います。

<p>{{ $errors->first('email') }}</p>
<p>{{ $errors->first('password_confirmation') }}</p>

これを修正するには、モデルの検証ルールを変更するか、検証の実装を変更する必要があります。これら 2 つの優れたチュートリアルでは、いくつかのアプローチを示しています。

https://tutsplus.com/lesson/validation-services/

https://tutsplus.com/lesson/validating-with-models-and-event-listeners/

于 2013-08-05T03:15:49.333 に答える