2017-10-02 2 views
2

Ich arbeite an einem Laravel-Projekt. Ich war nicht der ursprüngliche Entwickler, also wenn ich einen Fehler mache, verzeih mir und erkläre bitte, was es war.Vermeiden Sie "Auto-Login", wenn das Passwort zurückgesetzt wird

In diesem Projekt haben wir ein Modul, um ein neues Passwort anzufordern. Wenn das Formular übermittelt wird, wird der Benutzer zu route('password.request') umgeleitet, die, glaube ich, irgendwo im Framework versteckt ist.

Das Problem ist, dass wenn der Benutzer sein neues Passwort bekommt, er automatisch eingeloggt ist und auf die Seiten zugreifen kann. Aber das soll er nicht, denn er hat keine Adminrechte.

Also habe ich versucht, mich abzumelden und umleiten den Benutzer auf die Hauptseite, ohne Glück.

Kann jemand erklären, warum Laravel (oder "ich", wie sie sind einige Teile des Projekts, die ich noch nicht erforscht habe) das tun und wie das zu beheben?

reset.blade.php (Formular neues Passwort anzufordern)

form class="form-horizontal" role="form" method="POST" action="{{ route('password.request') }}"> 
    {{ csrf_field() }} 

    <input type="hidden" name="token" value="{{ $token }}"> 
.... 

meine individuelle Abmelde Route:

Route::get('/customLogout', 'Auth\[email protected]'); 

resetPasswordController.php

<?php 

namespace App\Http\Controllers\Auth; 

use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\ResetsPasswords; 

class ResetPasswordController extends Controller 
{ 
    /* 
    |-------------------------------------------------------------------------- 
    | Password Reset Controller 
    |-------------------------------------------------------------------------- 
    | 
    | This controller is responsible for handling password reset requests 
    | and uses a simple trait to include this behavior. You're free to 
    | explore this trait and override any methods you wish to tweak. 
    | 
    */ 

    use ResetsPasswords; 

    /** 
    * Where to redirect users after resetting their password. 
    * 
    * @var string 
    */ 
    protected $redirectTo = '/customLogout'; 

    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('guest'); 
    } 
} 

Methode in LoginController.php

public function customLogout(){ 
     //Session::flush();  
     return redirect()->route('/'); 
      } 
+0

Wie Sie „Das Problem erwähnt, dass, wenn der Benutzer wird es neue Passwort ist, wird er automatisch eingeloggt und zugreifen die Seiten." . Grundsätzlich ist dies der tatsächliche Durchfluss. wenn Sie Ihr Passwort zurücksetzen. Sie sollten sich automatisch an der Site anmelden. Also, was ist dein Problem? –

+0

@ Tej, von meinem Verständnis, die Op will nicht automatisch einloggen. – Option

+0

Dann gibt es nur einen Weg. Sie müssen Ihre Sitzung leeren und Ihre Logout-Funktion aufrufen. Benutzer wird zur Hauptseite umleiten. Aber ich empfehle diesen Ansatz nicht. –

Antwort

2

Ok, ich (Finnaly) fand einen Weg.

Ich übersteuerte die Funktion namens "ResetPassword" und löschte die Login-Code Stück.

Diese Funktion aus dem Rahmen kommt (kann die Datei nicht mehr daran erinnern, wenn jemand auf dieser helfen könnte: S) I overrided die Funktion in meinem ResetPasswordController.php

protected function resetPassword($user, $password) 
    { 
     $user->forceFill([ 
      'password' => bcrypt($password), 
      'remember_token' => Str::random(60), 
     ])->save(); 

     //$this->guard()->login($user); 
    } 

Dieses Passwort-Wechsel machen und Redirect automatisch auf die Hauptseite.

Edit: Oh, und vergessen Sie nicht, diese in hinzufügen, um Ihre beinhaltet:

use Illuminate\Support\Str; 
+0

gut für Sie .. –

Verwandte Themen