यह लार्वा 5.2.x और अधिक के लिए है। यदि आप HTTPS पर कुछ सामग्री और HTTP पर दूसरों की सेवा करने का विकल्प चाहते हैं, तो एक समाधान है जो मेरे लिए काम करता है। आप आश्चर्यचकित हो सकते हैं, कोई व्यक्ति HTTPS पर केवल कुछ सामग्री क्यों परोसना चाहता है? HTTPS पर सब कुछ क्यों नहीं परोसें?
हालाँकि, HTTPS पर पूरी साइट की सेवा करना पूरी तरह से ठीक है, HTTPS पर सब कुछ अलग करने से आपके सर्वर पर एक अतिरिक्त ओवरहेड होता है। याद रखें एन्क्रिप्शन सस्ता नहीं आता है। मामूली ओवरहेड का आपके एप्लिकेशन प्रतिक्रिया समय पर भी प्रभाव पड़ता है। आप तर्क दे सकते हैं कि कमोडिटी हार्डवेयर सस्ता है और प्रभाव नगण्य है, लेकिन मैं पचाता हूं :) मुझे https पर छवियों आदि के साथ मार्केटिंग कंटेंट बड़े पेजों को परोसने का विचार पसंद नहीं है। तो यहाँ यह जाता है। यह ऐसा ही है जैसा कि दूसरों ने मिडलवेयर का उपयोग करके ऊपर सुझाव दिया है, लेकिन यह एक पूर्ण समाधान है जो आपको HTTP / HTTPS के बीच आगे और पीछे टॉगल करने की अनुमति देता है।
सबसे पहले एक मिडलवेयर बनाएं।
php artisan make:middleware ForceSSL
यह वही है जो आपके मिडलवेयर को दिखना चाहिए।
<?php
namespace App\Http\Middleware;
use Closure;
class ForceSSL
{
public function handle($request, Closure $next)
{
if (!$request->secure()) {
return redirect()->secure($request->getRequestUri());
}
return $next($request);
}
}
ध्यान दें कि मैं पर्यावरण के आधार पर फ़िल्टर नहीं कर रहा हूं क्योंकि मेरे पास स्थानीय देव और उत्पादन दोनों के लिए HTTPS सेटअप है, इसलिए इसकी आवश्यकता नहीं है।
निम्नलिखित को अपने मार्ग पर जोड़ें: \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ कर्नेल \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ कर्नेल.php को अपने रूट में जोड़ें ताकि आप चुन सकें और चुन सकें कि किस रूट समूह को एसएसएल को मजबूर करना चाहिए।
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'forceSSL' => \App\Http\Middleware\ForceSSL::class,
];
इसके बाद, मैं दो मूल समूहों लॉगिन / साइनअप आदि को सुरक्षित करना चाहता हूं और प्रामाणिक मिडलवेयर के पीछे सब कुछ।
Route::group(array('middleware' => 'forceSSL'), function() {
/*user auth*/
Route::get('login', 'AuthController@showLogin');
Route::post('login', 'AuthController@doLogin');
// Password reset routes...
Route::get('password/reset/{token}', 'Auth\PasswordController@getReset');
Route::post('password/reset', 'Auth\PasswordController@postReset');
//other routes like signup etc
});
Route::group(['middleware' => ['auth','forceSSL']], function()
{
Route::get('dashboard', function(){
return view('app.dashboard');
});
Route::get('logout', 'AuthController@doLogout');
//other routes for your application
});
पुष्टि करें कि आपके बिचौलिये कंसोल से आपके मार्गों पर ठीक से लागू होते हैं।
php artisan route:list
अब आपने अपने आवेदन के सभी रूपों या संवेदनशील क्षेत्रों को सुरक्षित कर लिया है, कुंजी अब अपने सुरक्षित और सार्वजनिक (गैर https) लिंक को परिभाषित करने के लिए अपने दृश्य टेम्पलेट का उपयोग करना है।
ऊपर दिए गए उदाहरण के आधार पर आप अपने सुरक्षित लिंक निम्नानुसार प्रस्तुत करेंगे -
<a href="{{secure_url('/login')}}">Login</a>
<a href="{{secure_url('/signup')}}">SignUp</a>
गैर सुरक्षित लिंक के रूप में प्रदान किया जा सकता है
<a href="{{url('/aboutus',[],false)}}">About US</a></li>
<a href="{{url('/promotion',[],false)}}">Get the deal now!</a></li>
यह जो करता है वह https: // yourhost / login और http: // yourhost / aboutus जैसे पूरी तरह से योग्य URL को प्रस्तुत करता है
यदि आप http के साथ पूरी तरह से योग्य URL रेंडर नहीं करते थे और एक रिश्तेदार लिंक url ('/ aboutus') का उपयोग करते हैं, तो उपयोगकर्ता सुरक्षित साइट पर जाने के बाद https जारी रहेगा।
उम्मीद है की यह मदद करेगा!