2016-12-06 2 views
0

Я только начал изучать Laravel, и я пытался настроить систему аутентификации. Я мог бы использовать laravel, построенный в auth, но я следовал учебнику, чтобы понять концепцию. Моя система auth построена с использованием некоторых модалов из бутстрапа, и система работает (вроде). Регистрация работает, но как только я вхожу в логический знак, регистрация вызывается как-то (без ошибок) и не сохраняет моего пользователя в базе данных.Laravel Auth Issue

Вот что я использую:

Это модальное окно для регистрации. Вход в систему практически не изменился, я просто изменил действие, чтобы указать на метод postSignin.

<!-- Modal Register area --> 
<div class="modal fade" id="registerModal" tabindex="-1" role="dialog" aria-labelledby="myRegisterLabel" aria-hidden="true"> 
    <div class="modal-dialog" role="document"> 
    <div class="modal-content"> 
     {!! Form::open(['method' => 'POST', 'action' => '[email protected]', 'class' => 'login-form']) !!} 
     <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
      <span aria-hidden="true">&times;</span> 
     </button> 
     <h4 class="modal-title" id="myRegisterLabel">Sign Up</h4> 
     </div> 
     <div class="modal-body"> 
     <div class="form-group"> 
      <label>Email:</label> 
      {!! Form::text('email', Request::old('email'),['placeholder' => 'Email...']) !!} 
     </div> 
     <div class="form-group"> 
      <label>Password:</label> 
      {!! Form::password('password', Request::old('password'),['placeholder' => 'Password...']) !!} 
     </div> 
     <div class="row"> 
      <div class="col-sm-12"> 
      <input type="submit" class="btn btn-primary login-btn" value="Sign Up"> 
      </div> 
     </div> 
     </div> 
     {!! Form::close() !!} 
     @if($errors->any()) 
     @foreach ($errors->all() as $error) 
      <div class="alert alert-danger"> 
      <p>{{ $error }}</p> 
      </div> 
     @endforeach 
     @endif 
    </div> 
    </div> 
</div> 
<!-- End Modal Register area --> 

Это, как я создал мой контроллер:

<?php 

namespace App\Http\Controllers; 

use App\User; 
use Illuminate\Http\Request; 
use Auth; 

class UserController extends Controller 
{ 
    public function postSignup(Request $request){ 
     $this->validate($request, [ 
     'email' => 'email|required|unique:users', 
     'password' => 'required|min:4' 
     ]); 

     $user = new User([ 
     'email' => $request->input('email'), 
     'password' => bcrypt($request->input('password')) 
     ]); 
     $user->save(); 

     return redirect('/'); 
    } 

    public function postSignin(Request $request){ 
     $this->validate($request, [ 
     'email' => 'email|required', 
     'password' => 'required|min:4' 
     ]); 

     if (Auth::attempt([ 
     'email' => $request->input('email'), 
     'password' => $request->input('password') 
     ])){ 
     return redirect()->route('user.profile'); 
     } 
     return redirect()->back(); 
    } 

    public function getProfile(){ 
     return view('user.profile'); 
    } 
} 

Для моих маршрутов я просто:

Route::post('/','[email protected]'); 

Route::post('/','[email protected]'); 

Итак, как я уже сказал, как только я создал Вход Регистрация не регистрирует моего пользователя в БД. Если я выберу это, он будет работать. Вход в систему работает в любом случае, если у меня есть некоторые пользователи в БД. Спасибо за помощь!

ответ

0

Хорошо, для кого-то интересуется, в чем проблема. Это из-за моих маршрутов. Оба указывали на «/», которые каким-то образом приводят к этой проблеме.

0

Проблема в том, что оба ваших маршрута совпадают. Способ маршрутизации в Laravel работает, так как он будет проверять ваши маршруты последовательно, пока не найдет тот, который соответствует. В этом случае обе ситуации будут соответствовать первому маршруту, поскольку URL-адрес и HTTP-глагол одинаковы.

Аналогичная общая проблема, с которой я встречаюсь, - это когда у вас есть маршрут с переменной в нем.

Route::get('posts/{post}', '[email protected]') 
Route::get('posts/popular', '[email protected]') 

В этом примере вы столкнулись с подобной проблемой, потому что это будет первым матчем первого маршрута и не будет беспокоить, исходя ко второй.