Laravel 5 Auth Redirecting - 它有效,但它是否正确?

时间:2015-08-16 17:49:25

标签: php laravel authentication laravel-5 laravel-5.1

让我试着解释一下。

如果访客进入/目录,欢迎他。如果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

我如何重新调整此功能,使其完全像现在一样工作,但考虑到更好的做法?或者我为这些目的做得完全正常吗?

2 个答案:

答案 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'

    }
}