2016-09-21 14 views
2

Ich benutze Laravel 5.3 und den php artisan Befehl make:auth um die Registrierung und Anmeldung zu scaffold. Nachdem sich ein Nutzer registriert hat, möchte ich ihn auf eine Seite umleiten, auf der beispielsweise "Ihre E-Mail-Adresse bestätigen" steht, und ich möchte nicht, dass sich der Nutzer automatisch wie standardmäßig anmeldet.Laravel 5.3 Redirect User nach der Registrierung

Ich kann nur denken, in der create() Methode in der RegisterController, anstatt den Benutzer zurück (ich nehme an, dass es ist, wo es automatisch anmeldet), möchte ich zu einer anderen Ansicht umleiten.

protected function create(array $data) 
{ 
    $confirmation_code = str_random(30); 

    Mail::to($data['email'])->send(new Company($confirmation_code)); 

    User::create([ 
     'confirmation_code' => $confirmation_code, 
     'password' => bcrypt($data['password']), 
     'email' => $data['email'] 
    ]); 

    return redirect()->route('verifyemail'); 
} 

Aber ich bekomme diese Fehlermeldung: Argument 1 passed to Illuminate\Auth\SessionGuard::login() must implement interface Illuminate\Contracts\Auth\Authenticatable, instance of Illuminate\Http\RedirectResponse given, called in C:\xampp\htdocs\app\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php on line 32 and defined

ich die register(Request $request) Methode in der RegistersUsers.php außer Kraft zu setzen versucht, die Leitung zu nehmen, dass die Anmeldungen macht, aber es funktioniert immer noch nicht.
Irgendwelche Ideen?

BEARBEITEN: Ich fügte $this->guard()->logout(); der überlagerten register Methode hinzu, nachdem es die Anmeldung macht. Es funktioniert, aber es ist nicht der richtige Weg, dies zu tun, und ich würde gerne eine andere Lösung finden ..

Antwort

0

Ich würde Ihren eigenen Register-Controller für mehr Flexibilität erstellen. Und in ihrer machen die create/store-Methode, die erstellt und dann an den gewünschten Ort umgeleitet wird. Wäre es nicht zu lange dauern

+0

Das klingt wie eine unnötige Problemumgehung. Es muss einen einfacheren Weg geben. –

0

in app/Http/Controller/Auth/RegisterController fügen Sie diese nach Methode erstellen:

Code eingeben hier

public function redirectPatch() 
{ 
    return "verifyemail"; 
} 

Exemple

protected function create(array $data) 
{ 
    $confirmation_code = str_random(30); 

    Mail::to($data['email'])->send(new Company($confirmation_code)); 

    User::create([ 
     'confirmation_code' => $confirmation_code, 
     'password' => bcrypt($data['password']), 
     'email' => $data['email'] 
    ]); 

} 
public function redirectPatch() 
{ 
    return "/verifyemail"; 
} 
0

Seit Wochen versuche ich eine Lösung dafür zu finden. die Standard-URL außer Kraft zu setzen nach der Registrierung nur innerhalb der Funktion erstellen fügen Sie folgendes:

$this->redirectTo = '/url-after-register'; 

Genau wie dieser

protected function create(array $data) { 
    $this->redirectTo = '/url-after-register'; 

    return User::create([...]); 
} 
0

Dank! Ich habe Ihre Lösung implementiert. Oder Sie können die registrierte Methode in Ihrer Klasse außer Kraft setzen und auf Ihre spezifische Route umleiten.

protected function registered(Request $request, $user) 
{ 
    $this->guard()->logout(); 
    return Redirect::route('your.route'); 
} 
Verwandte Themen