当前我尝试使用用户名和密码从外部API https://fakestoreapi.com/auth/login登录HTTP客户端,如果登录成功,将收到令牌。
现在我必须做一个错误消息,并返回到登录表单,如果用户名和密码错误。但我得到的仍然是一个错误,从laravel像尝试读取属性“令牌”空。请帮助我,我是一个初学者。
这是我的控制器代码。
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Session;
class MasukController extends Controller
{
public function masuk()
{
return view('login');
}
public function cek(Request $request)
{
$request->validate([
'username' => 'required',
'password' => 'required',
]);
// Send a POST request to the API
$response = Http::post('https://fakestoreapi.com/auth/login', [
'username' => $request->input('username'),
'password' => $request->input('password'),
]);
// Decode the response
$data = json_decode($response);
// Get the token from the response
$token = $data->token;
// Redirect to the dashboard page
if (is_null($token)) {
Session::flash('error', 'Error: Token is null');
// Redirect the user back to the previous page
return redirect()->back();
} else {
session(['token' => $token]);
return redirect('/');
}
}
}
我想显示错误消息,如果用户名和密码不匹配,在登录形式。
2条答案
按热度按时间7hiiyaii1#
也许你可以在执行post方法时使用
GuzzleHttp\Client
。例如使用下面的GuzzleHTTP:
然后可以转储& die / dd响应-〉getBody()以获取输出
gojuced72#
您正在尝试对整个$response对象进行json_decode,这将失败。有更简单的方法可以完成此操作:
获取所有响应数据的数组:
仅获取令牌: