suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Die benutzerdefinierte Anmeldung/Registrierung von Laravel 10 führt nicht zur Dashboard-Seite

<p>Ich versuche, meine eigene benutzerdefinierte Anmeldung/Registrierung für Laravel 10 zu erstellen, da ich das breez-Paket nicht verwenden möchte, sondern lernen möchte, wie ich die Anmeldung/Registrierung selbst durchführe. </p> <p>Aber ich kann mich anscheinend nicht auf der Dashboard-Seite authentifizieren. </p> <p>Ich verwende eine if-Anweisung <code>if(Auth::check())</code> in der Dashboard-Funktion, um den Benutzer in der Datenbank zu authentifizieren. </p> <p>Aber das funktioniert bei mir nicht, weil ich ständig die Fehlermeldung bekomme, dass ich zur Anmeldeseite zurückgeleitet werde (<strong>Dies passiert nur, wenn ich einen neuen Benutzer in der Datenbank registriere</strong>), aber Immer wenn ich versuche, mich anzumelden, erhalte ich eine Erfolgsmeldung von der Anmeldefunktion (<strong>Code siehe weiter unten</strong>), während ich mich noch auf der Anmeldeseite befinde. </p> <p><strong>AuthController (Dashboard): </strong></p> <pre class="brush:php;toolbar:false;">öffentliche Funktion Dashboard(): Ansicht { if(Auth::check()) { return view('auth.dashboard'); } return view('auth.login')->with('error', 'Sie dürfen nicht darauf zugreifen'); }</pre> <p><strong>AuthController (Anmeldung): </strong></p> <pre class="brush:php;toolbar:false;">public function loginPost(Request $request): RedirectResponse { $request->validate([ 'email' => 'erforderlich', 'Passwort' => 'erforderlich' ]); $credentials = $request->only('email', 'password'); if(Auth::attempt($credentials)) { $request->session()->regenerate(); return weitergeleitet()->intended(route('dashboard'))->with('success', 'Sie haben sich erfolgreich angemeldet'); } return weitergeleitet(route('login'))->with('error', 'Oppes! Sie haben ungültige Anmeldeinformationen eingegeben'); }</pre> <p><strong>web.php</strong></p> <pre class="brush:php;toolbar:false;">Route::get('/register', [AuthController::class, 'register'])->name('register'); Route::post('/register', [AuthController::class, 'registerPost'])->name('register.post'); Route::get('/login', [AuthController::class, 'login'])->name('login'); Route::post('/login', [AuthController::class, 'loginPost'])->name('login.post'); Route::get('/dashboard', [AuthController::class, 'dashboard'])->name('dashboard'); Route::post('/logout', [AuthController::class, 'logout'])->middleware('auth')->name('logout');</pre> <p>Ich habe noch keine Lösung gefunden. Wenn mir also jemand helfen kann, wäre ich dankbar. </p>
P粉162773626P粉162773626450 Tage vor524

Antworte allen(2)Ich werde antworten

  • P粉006540600

    P粉0065406002023-09-06 12:41:06

    hii,您的注销功能受到中间件的保护,您还需要添加仪表板路由中间件,您可以对需要身份验证中间件的路由进行分组。

    Route::middleware('auth')->group(function () {
        Route::get('/dashboard', [AuthController::class, 'dashboard'])->name('dashboard');
        Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
    });

    Antwort
    0
  • P粉676588738

    P粉6765887382023-09-06 00:56:28

    您的路线

    Route::get('login', [FrontendAuthController::class, 'loginGet'])->name('login');
    Route::post('login', [FrontendAuthController::class, 'loginPost']);
    Route::post('logout', [FrontendAuthController::class, 'logout'])->name('logout');
    Route::get('register', [FrontendAuthController::class, 'registerGet'])->name('register');
    Route::post('register', [FrontendAuthController::class, 'registerPost']);

    您的控制器:

    <?php
    
    namespace App\Http\Controllers\Frontend;
    
    use App\Http\Controllers\Controller;
    use App\Models\User;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Auth;
    use Illuminate\Support\Facades\Hash;
    use Illuminate\Support\Facades\Session;
    
    class FrontendAuthController extends Controller
    {
        public function loginGet(Request $request)
        {
            return view('front.auth.login');
        }
    
        public function loginPost(Request $request)
        {
            $request->validate([
                'email' => 'required|email',
                'password' => 'required',
            ], [
                'email.required' => 'The email field is required.',
                'email.email' => 'Please enter a valid email address.',
                'password.required' => 'The password field is required.',
            ]);
    
            $credentials = $request->only('email', 'password');
            if (Auth::attempt($credentials)) {
                return redirect()->intended('/');
            } else {
                return redirect()->back()->withErrors(['email' => 'These credentials do not match our records.']);
            }
        }
    
        public function logout()
        {
            Auth::logout();
            Session::flush(); // Clear all session data
            Session::regenerate(); // Regenerate the session ID
            return redirect()->route('login');
        }
    
        public function registerGet()
        {
            return view('front.auth.register');
        }
    
        public function registerPost(Request $request)
        {
            $request->validate([
                'name' => 'required|string|max:255',
                'email' => 'required|email|unique:users,email',
                'password' => 'required|min:8|confirmed',
            ], [
                'name.required' => 'The name field is required.',
                'email.required' => 'The email field is required.',
                'email.email' => 'Please enter a valid email address.',
                'email.unique' => 'This email address is already registered.',
                'password.required' => 'The password field is required.',
                'password.min' => 'The password must be at least 8 characters.',
                'password.confirmed' => 'The password confirmation does not match.',
            ]);
    
            // Create a new user record
            $user = new User();
            $user->name = $request->input('name');
            $user->email = $request->input('email');
            $user->password = Hash::make($request->input('password'));
            $user->save();
    
            // Log in the newly registered user
            Auth::login($user);
    
            // Redirect the user to the home page or any other desired page
            return redirect()->intended('/');
        }
    }

    您的登录刀片

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Sign In</title>
    
        <link rel="stylesheet" href="{{ url('frontend/css/style.css') }}">
    </head>
    
    <body>
        <div class="main">
            <section class="signup">
    
                <div class="container">
                    <div class="signup-content">
    
                        <form id="signup-form" class="signup-form" method="POST" action="{{ url('login') }}">
                            @csrf
                            <!--    <img src="images/logo.svg" alt="">-->
                            <h2 class="form-title">Login Here</h2>
                            <div class="form-group">
                                <input type="email" class="form-input" value="{{ old('email') }}" name="email"
                                    id="email" placeholder="Your Email" />
                            </div>
                            <div class="form-group">
                                <input type="text" class="form-input" name="password" id="password"
                                    placeholder="Password" />
                                <span toggle="#password" class="zmdi zmdi-eye field-icon toggle-password"></span>
                            </div>
                            @error('email')
                                <div style="color: red">{{ $message }}</div>
                            @enderror
    
                            @error('password')
                                <div style="color: red">{{ $message }}</div>
                            @enderror
                            <div class="form-group">
                                <input type="submit" name="submit" id="submit" class="form-submit" value="Sign in" />
                            </div>
                        </form>
                        <p class="loginhere">
                            New User? <a href="reg-form.html" class="loginhere-link">Register here</a>
                        </p>
                    </div>
                </div>
            </section>
        </div>
    </body>
    
    </html>

    您的注册页面

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Register</title>
    
        <link rel="stylesheet" href="{{ url('frontend/css/style.css') }}">
    </head>
    
    <body>
        <div class="main">
            <section class="signup">
    
                <div class="container">
                    <div class="signup-content">
    
                        <form id="signup-form" class="signup-form" method="POST" action="{{ route('register') }}">
                            @csrf
                            <h2 class="form-title">Register Here</h2>
                            <div class="form-group">
                                <input type="text" class="form-input" value="{{ old('name') }}" name="name" id="name"
                                    placeholder="Your Name" />
                            </div>
                            <div class="form-group">
                                <input type="email" class="form-input" value="{{ old('email') }}" name="email"
                                    id="email" placeholder="Your Email" />
                            </div>
                            <div class="form-group">
                                <input type="password" class="form-input" name="password" id="password"
                                    placeholder="Password" />
                                <span toggle="#password" class="zmdi zmdi-eye field-icon toggle-password"></span>
                            </div>
                            <div class="form-group">
                                <input type="password" class="form-input" name="password_confirmation"
                                    id="password_confirmation" placeholder="Confirm Password" />
                            </div>
                            @error('name')
                                <div style="color: red">{{ $message }}</div>
                            @enderror
    
                            @error('email')
                                <div style="color: red">{{ $message }}</div>
                            @enderror
    
                            @error('password')
                                <div style="color: red">{{ $message }}</div>
                            @enderror
    
                            <div class="form-group">
                                <input type="submit" name="submit" id="submit" class="form-submit" value="Register" />
                            </div>
                        </form>
                        <p class="loginhere">
                            Already have an account? <a href="{{ route('login') }}" class="loginhere-link">Login here</a>
                        </p>
                    </div>
                </div>
            </section>
        </div>
    </body>
    
    </html>

    我想这会解决您的所有疑问

    Antwort
    0
  • StornierenAntwort