根据Laravel 5.8中的会话显示子页面

时间:2019-06-05 12:12:36

标签: php laravel laravel-5

我是Laravel的乞gg。我在项目中使用Laravel 5.8。

我需要做一些事情,以便具有php成人= 1会话的用户可以查看特定的路由。

我有路线:

Route::get('/', 'FrontendController@index')->name('index');
Route::get('/sample1', 'FrontendController@sample1')->name('sample1');

SAMPLE1视图适用于php成人= 1会话的用户。 如果用户没有这样的会话-必须将其自动重定向到@ index

您该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以通过创建自定义中间件来实现此目的,请在此处查看文档:

https://laravel.com/docs/5.8/middleware

您可以在users表上保持一个用户是否成人的身份,而不是使用会话,这意味着您可以通过经过身份验证的用户访问此信息(整个应用程序中都可用)。

例如在您的应用程序中,使用php artisan make:auth,它将为您提供注册/登录系统所需的一切。在运行迁移之前,请向create_users_table迁移中添加一个新字段,例如$table->boolean('adult')->default(false);

然后,在运行迁移后,您可以使用带有以下内容的php artisan make:middleware CheckAdult创建新的中间件:

<?php

namespace App\Http\Middleware;

use Closure;

class CheckAdult
{
    public function handle($request, Closure $next)
    {
        if (!auth()->check() || !auth()->user()->adult) {
            return redirect('/');
        }

        return $next($request);
    }
}

以上中间件会将未登录或有adult = 0的任何人重定向到索引页面,否则继续他们的请求。

然后注册中间件并在路由中使用它;根据文档。

答案 1 :(得分:0)

您可以使用auth和中间件来实现此目的。简单的逻辑就是这样:$id = Auth::user()->adult;在您的控制器中以检查用户。 ofcorse成人是您表中的一个字段。

//on top of your controller place this
    public function __construct()
        {
            $this->middleware('auth');
        }

//control logic to check user
    if($adult==1){
          //perform unique task
    }else{
       return redirect('/')->with('message','You are not permitted')
    }