让我试着解释一下。
如果访客进入/
目录,欢迎他。如果guest虚拟机尝试转到/start
目录,则会将其重定向到登录页面。
访客登录后,会被重定向到/start
目录。如果登录用户转到/
目录,则会再次将其重定向到/start
目录。 (登录后无需查看主页。)
我按照我想要的方式工作,但是我不确定我是否正在做这个Laravel打算如何做到这一点,因为我的{{1}中有一些非DRY代码}。另外,我基本上将PagesController重定向到PagesController(听起来不像是对我的良好做法)。
以下是PagesController.php
:
routes.php
以下是<?php
Route::get('', 'PagesController@index');
Route::get('start', 'PagesController@start');
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController'
]);
:
PagesController.php
我如何重新调整此功能,使其完全像现在一样工作,但考虑到更好的做法?或者我为这些目的做得完全正常吗?
答案 0 :(得分:1)
最好使用middlewares,使用中间件可以获取控制器的身份验证可控性并让它担心内容,这将使您的控制器轻松可维护。
您应该使用Auth Middleware
答案 1 :(得分:1)
你可以尝试这样的事情。与您所拥有的不同,但会导致代码减少。
<?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'
}
}