Php Laravel 5身份验证重定向-它可以工作,但它正确吗?
让我来解释一下 如果客人进入Php Laravel 5身份验证重定向-它可以工作,但它正确吗?,php,laravel,authentication,laravel-5,laravel-5.1,Php,Laravel,Authentication,Laravel 5,Laravel 5.1,让我来解释一下 如果客人进入/目录,他是受欢迎的。如果来宾试图转到/start目录,他将被重定向到登录页面 来宾登录后,会被重定向到/start目录。如果登录用户转到/目录,他将再次被重定向到/start目录。(登录后无需查看主页) 我让它按照我想要的方式工作,但是我不确定我是否按照Laravel的意图这样做,因为在我的PagesController.php中有一些非干代码。另外,我基本上是将PagesController重定向到PagesController(对我来说,这听起来不像是遵循好的实
/
目录,他是受欢迎的。如果来宾试图转到/start
目录,他将被重定向到登录页面
来宾登录后,会被重定向到/start
目录。如果登录用户转到/
目录,他将再次被重定向到/start
目录。(登录后无需查看主页)
我让它按照我想要的方式工作,但是我不确定我是否按照Laravel的意图这样做,因为在我的PagesController.php
中有一些非干代码。另外,我基本上是将PagesController重定向到PagesController(对我来说,这听起来不像是遵循好的实践)
下面是routes.php
:
<?php
Route::get('', 'PagesController@index');
Route::get('start', 'PagesController@start');
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController'
]);
<?php
namespace App\Http\Controllers;
use App\HowItWorksModel;
use App\WhatYouGetModel;
use App\StartContentModel;
use Illuminate\Http\Request;
use Auth;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class PagesController extends Controller
{
public function index()
{
if (Auth::check()) {
return redirect()->action('PagesController@start');
}
$howItWorksContent = HowItWorksModel::all();
$whatYouGetContent = WhatYouGetModel::all();
return view('pages.index', compact(
'howItWorksContent',
'whatYouGetContent'
));
}
public function start()
{
if (Auth::check()) {
$startContent = StartContentModel::all();
return view('pages.start', compact(
'startContent'
));
}
return redirect('/auth/login');
}
}
我如何重新构造它,使其完全按照现在的工作方式工作,但考虑到更好的实践?或者,我所做的一切是否完全符合这些目的?最好是使用中间件,使用中间件将承担控制器的身份验证责任,并让它担心内容,这将使控制器轻便且易于维护
您应该使用您可以尝试这样的方法。与您所拥有的没有太大区别,但确实会减少代码
<?php
namespace App\Http\Controllers;
use App\HowItWorksModel;
use App\WhatYouGetModel;
use App\StartContentModel;
use Illuminate\Http\Request;
use Auth;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class PagesController extends Controller
{
public function __construct()
{
$this->middleware('auth', ['except' => 'index']);
}
public function index()
{
if (Auth::check())
return redirect('start');
$howItWorksContent = HowItWorksModel::all();
$whatYouGetContent = WhatYouGetModel::all();
return view('pages.index', compact(
'howItWorksContent',
'whatYouGetContent'
));
}
public function start()
{
$startContent = StartContentModel::all();
return view('pages.start', compact(
'startContent'
}
}
也许可以看看,它很可能就是你想要的。谢谢你的建议!谢谢,你能详细说明一下构造器在做什么吗?以前从未使用过中间件,但我真的很想遵循良好的实践,所以我想我现在就使用它。啊,很好,我现在得到了它。再次感谢。将中间件视为介于您的请求和视图之间。中间件负责确保请求适合视图。