Ich habe die von Laravel eingebaute Benutzerauthentifizierung aufgrund der Anforderungen meiner Anwendung deaktiviert. Wir vertrauen auf SSO von Drittanbietern, um unsere Benutzer zu authentifizieren, und ich konnte Socialite nicht dazu bringen, mit ihrem SSO zu arbeiten. Daher muss ich einen Controller speziell für die Authentifizierung erstellen. Der Controller führt b-e-a-nützlich bis zu dem Teil, wenn ich den Benutzer von der Callback-Route & Controller an den Member Route & Controller umleiten muss. Es wird nicht umgeleitet. Zeitraum. Ich habe jede Methode ausprobiert, von der ich weiß, wie ich auf eine andere Route innerhalb des Controllers umleiten kann und es wird nicht funktionieren.Laravel 5.3 Redirect von der Controller-Methode zu einer anderen Route
Hier ist mein individueller AuthController für Laravel 5.3:
<?php
namespace App\Http\Controllers;
use App\User;
use Curl\Curl;
use App\Http\Controllers\PhealController as Pheal;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Auth;
use Illuminate\Routing\Redirector;
class AuthController extends Controller
{
protected $curl;
private $data;
public function __construct()
{
$this->curl = new Curl();
$this->pheal = new Pheal();
$this->data = [];
}
public function sendToSSO()
{
$url = env('EVE_SSO_LOGIN')."?response_type=code&redirect_uri=".env('EVE_CALLBACK_URL')."&client_id=".env('EVE_CLIENT_ID')."&scope=".env('EVE_SCOPES');
return redirect($url);
}
public function handleCallback(Request $request)
{
$this->curl->setHeader('Authorization', "Basic ". base64_encode(env('EVE_CLIENT_ID').":".env('EVE_SECRET')));
$this->curl->setHeader('Content-Type', "application/x-www-form-urlencoded");
$this->curl->setHeader('Host', "login.eveonline.com");
$this->curl->post('https://login.eveonline.com/oauth/token', [
'grant_type' => 'authorization_code',
'code' => $request->code
]);
$response = $this->curl->response;
if (isset($response->error)) {
throw new \Exception($response->error_description);
}
$this->data = [
'accessToken' => $response->access_token,
'refreshToken' => $response->refresh_token
];
$this->verifyToken();
}
public function verifyToken()
{
$this->curl->setHeader('User-Agent', "David Douglas [email protected]");
$this->curl->setHeader('Authorization', "Bearer ". $this->data['accessToken']);
$this->curl->setHeader('Host', "login.eveonline.com");
$this->curl->get('https://login.eveonline.com/oauth/verify');
$response = $this->curl->response;
if (isset($response->error)) {
throw new \Exception($response->error_description);
}
$this->data['characterID'] = $response->CharacterID;
$this->data['characterName'] = $response->CharacterName;
$this->data['accessTokenExpire'] = $response->ExpiresOn;
try {
$characterInfo = $this->pheal->call('eve', 'CharacterInfo', ['characterID' => $this->data['characterID']])['result'];
} catch (\Exceoption $e) {
abort(404);
}
if (!isset($characterInfo['allianceID'])) {
abort(403, "Care Factor Alliance Members Only. Sorry :-(");
}
if ($characterInfo['allianceID'] !== env('CF-ALLIANCE-ID')) {
abort(403, "Care Factor Alliance Members Only. Sorry :-(");
}
$this->data['corporationID'] = $characterInfo['corporationID'];
$this->data['corporation'] = $characterInfo['corporation'];
$user = User::find($this->data['characterID']);
if ($user) {
$this->updateUserAndLogin($user);
} else {
$this->createNewUserAndLogin();
}
}
private function getData()
{
return $this->data;
}
public function createNewUserAndLogin()
{
dd('To be Created');
}
public function updateUserAndLogin($user)
{
$user->corporationID = $this->data['corporationID'];
$user->corporation = $this->data['corporation'];
$user->accessToken = $this->data['accessToken'];
$user->refreshToken = $this->data['refreshToken'];
$user->accessTokenExpire = $this->data['accessTokenExpire'];
$user->save();
//Auth::login($user);
return redirect('member/dashboard/');
}
}
Ich habe auch versucht:
return redirect()->route('member.dashboard');
ohne Glück.
Ich bin mir der folgenden Stackoverflow Antwort bewusst und es hat nicht funktioniert. http://stackoverflow.com/questions/21079280/laravel-redirect-from-controller-to-named-route-with-prams-in-url# – Dave
whar Fehler Informationen, die Sie angetroffen haben? –
Leider keine. Im Moment ist dies nur ein Verarbeitungsskript ohne Ausgabe. Anstatt dass der Benutzer angemeldet und umgeleitet wird, stoppt das Skript einfach und ein weißer Bildschirm wird angezeigt. – Dave