我是Laravel的乞gg。我在项目中使用Laravel 5.8。
我需要做一些事情,以便具有php成人= 1会话的用户可以查看特定的路由。
我有路线:
Route::get('/', 'FrontendController@index')->name('index');
Route::get('/sample1', 'FrontendController@sample1')->name('sample1');
SAMPLE1视图适用于php成人= 1会话的用户。 如果用户没有这样的会话-必须将其自动重定向到@ index
您该怎么做?
答案 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')
}