[英]Laravel 5.7 Login with no Redirect or Errors
我是 Laravel 的新手,所以我開始學習 Laracast 的課程,然后上課的那個人去驗證用戶並猜測等。注冊工作正常,它使用散列密碼進入數據庫,並讓該用戶保持剛剛注冊登錄(並且可以做登錄用戶應該在網站上做的所有事情)。 當我轉到我的登錄表單並嘗試登錄時,它不會重定向並給出錯誤。 即使用戶/密碼憑據不正確,它也會重新加載。
需要注冊它如何將用戶保存到數據庫中。
$user = User::create([
'name' => request('name'),
'email' => request('email'),
'password' => bcrypt(request('password'))
]);
登錄表格...
<form method="POST" action="/login">
{{ csrf_field() }}
<div class="form-group">
<label for="Email">Email:</label>
<input type="email" class="form-control" id="Email" name="Email" required>
</div>
<div class="form-group">
<label for="password">Password:</label>
<input type="password" class="form-control" id="password" name="password" required>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Sign in</button>
</div>
@include ('layouts.errors')
</form>
用於路由的 web.php
Route::get('/', 'PostsController@index')->name('home');
Route::get('/posts/create', 'PostsController@create');
Route::post('/posts', 'PostsController@store');
Route::get('/posts/{post}', 'PostsController@show');
Route::post('/posts/{post}/comments', 'CommentsController@store');
Route::get('/register', 'RegistrationController@create');
Route::post('/register', 'RegistrationController@store');
Route::get('/login', 'SessionsController@create')->name('login');
Route::post('/login', 'SessionsController@store');
Route::get('/logout', 'SessionsController@destroy');
處理登錄的控制器
<?php
class SessionsController extends Controller
{
public function __construct()
{
$this->middleware('guest');
}
public function create()
{
return view('sessions.create');
}
public function store()
{
// Attempt to authenticate the user.
if (!auth()->attempt(request(['email', 'password']))) {
return back();
}
// Redirect them to the homepage
return redirect()->home();
}
public function destroy()
{
auth()->logout();
return redirect()->home();
}
}
錯誤.php
<div class="form-group">
<div class="alert alert-errors">
<ul>
@foreach($errors->all() as $error)
<li> {{ $error }} </li>
@endforeach
</ul>
</div>
</div>
看看你的表格。 輸入的名稱是控制器中訪問它們所需的名稱。
在您聲明的表單中Email和password 。
...
<input type="email" class="form-control" id="Email" name="Email" required>
....
<input type="password" class="form-control" id="password" name="password" required>
...
在 Controller 中,您嘗試訪問email和password 。
if (! auth()->attempt(request(['email', 'password']))) {
這可能是登錄失敗並且您剛剛被重定向到頁面的原因,因為執行的代碼是
return back();
所以改變你的形式
....
<div class="form-group">
<label for="Email">Email:</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
.....
讓我知道這是否有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.