[英]Laravel: call global function for only authenticated users
我只想为已通过身份验证的用户调用全局函数,以检查其帐户是否已通过验证。 从所有路线
功能。
public function verifyAccount()
{
if (Auth::user()->verified == 0)
{
return redirect('/checkpoint');
}
return redirect('/home');
}
并且该功能当前已在基本路由中启用。
Route::get('/', function () {
if (Auth::check()) {
UserService::verifyAccount();
}
return redirect('/home');
});
我的问题是当前这仅适用于家庭/基地路线。 我希望有一种更简单的方法来实现所有路由,而不必手动复制并粘贴到每个路由。
我很想在我的路线上使用路线组功能['middleware' => 'auth']
。 但我不能,因为该网站允许访客和已验证用户。
任何帮助,将不胜感激。
您可以在app/Http/Middleware
目录中创建自己的middleware
:
namespace App\Http\Middleware;
use Closure;
class VerifyAccount{
public function handle($request, Closure $next) {
if ($request->user()->verified) {
return $next($request);
} else {
return response('Unauthorized.', 401);
//////////// return redirect()->route('checkpoint');
}
}
}
在app/Http/Kernel.php
注册新的middleware
:
protected $routeMiddleware = [
...
...
'verifyAccount' => VerifyAccount::class
];
并在你的routes.php
使用它:
Route::group(['middleware' => ['verifyAccount']], function () {
//////////// Here all your routes
////// Example:
Route::get('myProtectedRoute', array('uses' => 'MyController@MyControllerFunction'))->name('myActionName');
});
Laravel很棒吗? :-)
您可以为此功能创建一个中间件..并创建路由组以检查所有路由。 例如
Route::group(['middleware' => ['verifyAccount'] function ()
{
Route::get('dashboard', 'admin\AdminController@dashboard')->name('adminDashboard');
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.