Laravel:登录不会重定向到主页

问题描述 投票:0回答:1

我在使用 Laravel 登录时遇到问题。每次用户登录时,它会将他们重定向到发布路由(空白页面)而不是主页,这是预期的路由。即使当我使用错误的凭据登录时,它也会转到发布路由。它甚至不显示错误消息。注销的重定向工作正常,只是我遇到问题的登录。

这是我的登录控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Auth;
use Redirect;
use Session;

class LoginController extends Controller
{

    public function index()
    {
      return view('login');         
    }
   
    public function login(Request $request)
    {
        $username = $request->input('username');
        $password = $request->input('password');

        if(Auth::attempt(['username' => $username, 'password' => $password, 'active' => 1])) {
           $request->session()->regenerate();
           session(['username' => 'username']);
           return redirect()->intended('home');
        }
       else 
        {
            Session::flash('alert-error', 'The username or password is incorrect. Please try again');
        }
       
    }
    public function logout(Request $request)
    {

        Auth::logout();
        $request->session()->invalidate();
        $request->session()->regenerateToken();

        return Redirect::route('login');

    }

}

login.blade.php:

<!DOCTYPE html>
<html>
    @include('layout.header')
     <!-- Custom Styles -->
  <link href="{{asset('css/stylesheet.css')}}" rel="stylesheet">
    <body style="text-align:center;">
<br><br><br><br>

       <div class="form">
            <h2>LOGIN</h2>
            <p>Please enter your credentials to login.</p>
        
        <form action="{{route('login.post')}}" method="POST" class="form-group">
        {{ csrf_field() }}
          <input type="text" name="username" id="username" placeholder="Username" class="form-control" required/><br><br>
          <input type="password" name="password" id="password" placeholder="Password" class="form-control" required/><br><br>
          <button type="submit" name="login" id="login" class="btn btn-primary">login</button><br><br>
          <a style="color:black;float:left;" href=" " >Change Password</a>
        </form>
</div>
    </body>
</html>

web.php(我的路线)

<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/

Route::get('/', function () {
    return view('login');
});
//login, logout routes
Route::get('login', 'App\Http\Controllers\LoginController@index')->name('login');
Route::post('/login/post',[App\Http\Controllers\LoginController::class, 'login'])->name('login.post');

Route::get('logout', 'App\Http\Controllers\LoginController@logout')->name('logout');
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');

laravel laravel-blade laravel-routing laravel-controller
1个回答
1
投票

改为使用:

//or return redirect()->to('home')
return redirect()->route('home');

下面是intended()方法的代码:

public function intended($default = '/', $status = 302, $headers = [], $secure = null)
{
    $path = $this->session->pull('url.intended', $default);
    
    return $this->to($path, $status, $headers, $secure);
}

如果它在会话中有一个'url.intended'键,它总是会根据'url.intended'键的值进行重定向。在这种情况下,“url.intended”键的值是“登录”。

© www.soinside.com 2019 - 2024. All rights reserved.