【问题标题】:Before Authentification in Laravel在 Laravel 中进行身份验证之前
【发布时间】:2017-09-11 16:57:02
【问题描述】:

我使用 Artisan 的 Laravel 身份验证, 我想使用电子邮件/密码登录,但在此之前我想调用 Web 服务,因此 Web 服务的结果返回 true 登录继续,但如果返回 false,它会在登录页面中重定向并显示错误消息。 怎么办?

【问题讨论】:

标签: laravel web service login laravel-artisan


【解决方案1】:

您可以为此使用middleware(文档中的示例将使您更好地理解)。在 app/http/middleware 中编写一个调用您的 Web 服务的中间件,如下所示,

您可以使用 artisan 命令定义中间件; php artisan make:middleware Webservice

<?php

namespace App\Http\Middleware;

use Closure;

class WebserviceMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {   
        // get return value of the web service
        $return_value = webservice.call();

        if (!$return_value)
        {
            //if return value is false define the redirect to login route
            return redirect('/');
        }

        //else let the request to be proceeded.
        return $next($request);
    }
}

并通过将中间件包含在 $routemiMiddleware 属性中来注册中间件,如下所示;

protected $routeMiddleware = [
        //other exisiting middleware
        'webservice' =>  \App\Http\Middleware\WebserviceMiddleware::class,
    ];

现在将通过 laravel 默认身份验证的 auth 路由放入 web.php 中的中间件中,如下所示,

Route::group(['middleware' => 'webservice'], function () {
    Auth::routes();
});

或通过,

Auth::routes()->middleware('webservice');

现在在继续之前评估 web 服务返回值。

【讨论】:

    猜你喜欢
    • 2017-08-27
    • 2021-02-08
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    相关资源
    最近更新 更多