php लॉगिन के बाद कस्टम url में Laravel 5.4 पुनर्निर्देशन




redirect laravel-5 (5)

जिस तरह से मैंने AuthenticatesUsers विशेषता का उपयोग करके किया है।

\App\Http\Controllers\Auth\LoginController.php

इस विधि को उस नियंत्रक में जोड़ें:

/**
 * Check user's role and redirect user based on their role
 * @return 
 */
public function authenticated()
{
    if(auth()->user()->hasRole('admin'))
    {
        return redirect('/admin/dashboard');
    } 

    return redirect('/user/dashboard');
}

मैं लारवेल फ्रेमवर्क 5.4.10 का उपयोग कर रहा हूं, और मैं नियमित प्रमाणीकरण का उपयोग कर रहा हूं

php artisan make:auth

प्रदान करता है। मैं संपूर्ण ऐप की सुरक्षा करना चाहता हूं, और लॉगिन के बाद उपयोगकर्ताओं / विषयों को रीडायरेक्ट करना चाहता हूं।

मेरे पास 4 कंट्रोलर हैं: फ़ॉरेस्टपासवर्डकंट्रोलर.फ्प, लॉगइनकंट्रोलर.फपी, रजिस्टरकंट्रोलर.फ्प और रेसपेटपॉर्सेकंट्रोलर.फैप। मैंने इस पंक्ति को अंतिम तीन में संपादित किया है:

protected $redirectTo = '/themes';

यह मेरे मार्गों / web.php में पहली पंक्ति है:

Auth::routes();

मैंने अपने कंट्रोलर में इस फ़ंक्शन को जोड़ा है।

    public function __construct()
    {
        $this->middleware('auth');

    }

मैंने ऐप / Http / Middleware / RedirectIfAuthenticated.php को संपादित किया है, ताकि हैंडल फ़ंक्शन इस तरह हो:

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check()) {
        return redirect('/themes');
    }

    return $next($request);
}

यह सब ठीक है, जब मैं लॉगिन बटन पर क्लिक करता हूं, तो मैं "/" पर पुनर्निर्देशित हो जाता हूं, "/ थीम" नहीं। यदि मुझे नियंत्रकों में नियंत्रक की कोई आवश्यकता नहीं है (कंट्रोलर फ़ाइल में कोई __contruct फ़ंक्शन नहीं है), तो मुझे लॉगिन पर पुनर्निर्देशित ओके मिलेगा। मैं क्या गलत कर रहा हूं?


यदि आप AuthenticatesUsers विशेषता में देखते हैं तो आप देखेंगे कि SendLoginResponse विधि में यह $this->redirectPath() करने के लिए की गई कॉल है। यदि आप इस विधि को देखते हैं तो आप पाएंगे कि पुनर्निर्देशन या तो एक विधि या एक चर हो सकता है।

यह वही है जो अब मेरे पास मेरे नियंत्रक में है।

public function redirectTo() {
    $user = Auth::user();
    switch(true) {
        case $user->isInstructor():
            return '/instructor';
        case $user->isAdmin():
        case $user->isSuperAdmin():
            return '/admin';
        default:
            return '/account';
    }
}

आपको रूट पुनर्निर्देशित करने के लिए $ redirectTo मान सेट करना चाहिए

$this->redirectTo = route('dashboard');

AuthController कंस्ट्रक्टर के अंदर।

/**
 * Where to redirect users after login / registration.
 *
 * @var string
 */
protected $redirectTo = '/';

/**
 * Create a new authentication controller instance.
 *
 * @return void
 */
public function __construct()
{
    $this->middleware($this->guestMiddleware(), ['except' => 'logout']);
    $this->redirectTo = route('dashboard');
}

आप LoginController में लाइन जोड़ सकते हैं, use App\User; कर सकते हैं use App\User; शीर्ष पर, इस ऐड मेथड के बाद, यह मेरे लिए काम है wkwkwkwwkw, लेकिन आपको व्यू एडमिन और यूजर पर {{ csrf_field() }} जोड़ना होगा

protected function authenticated(Request $request, $user){

$user=User::where('email',$request->input('email'))->pluck('jabatan');
$c=" ".$user." ";
$a=strcmp($c,' ["admin"] ');

if ($a==0) {
    return redirect('admin');

}else{
    return redirect('user');

}}

यही मैं काम कर रहा हूँ, क्या संयोग है।

आपको अपने LoginController में निम्नलिखित पंक्तियों को भी जोड़ना होगा

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;

use Illuminate\Foundation\Auth\AuthenticatesUsers;

use Illuminate\Http\Request;

class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/

use AuthenticatesUsers;


protected function authenticated(Request $request, $user)
{
if ( $user->isAdmin() ) {// do your margic here
    return redirect()->route('dashboard');
}

 return redirect('/home');
}
/**
 * Where to redirect users after login.
 *
 * @var string
 */
//protected $redirectTo = '/admin';

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