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