在Laravel的Authentification之前

时间:2017-09-11 16:57:03

标签: laravel web service login artisan

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

1 个答案:

答案 0 :(得分:0)

您可以使用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中的middlware中,如下所示,

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

或者,

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

现在,在继续之前评估webservice返回值。