我要实施第三方授权。
我发送帖子请求(使用Guzzle)并按预期方式获得回复。
CustomAuthController.php
class CustomAuthController extends Controller {
public function auth(Request $request) {
$username = $request->input('username');
$password = $request->input('password');
$client = new Client();
$url = 'http://...................../login';
$login_request = $client->post($url, [GuzzleHttp\RequestOptions::JSON => ['login' => $username, 'password' => $password,], 'headers' => ["accept-encoding" => "gzip, deflate"], 'decode_content' => false]);
$response_status = $login_request->getStatusCode();
$response_header = $login_request->getHeaders();
$response_body = $login_request->getBody()->getContents();
$response = json_decode($response_body);
if($response_status == 200) {
Auth::login($response->Login, true);
}
}
}
auth.php
'guards' => [
'web' => [
'driver' => 'token',
'provider' => 'users',
],
但是我得到一个错误:
Argument 1 passed to Illuminate\Auth\SessionGuard::login() must be an instance of Illuminate\Contracts\Auth\Authenticatable, string given.
我需要帮助来解决它。
答案 0 :(得分:0)
如错误所示,您的$response
变量是字符串,在login()
方法中不接受该变量作为参数。分配dd($reponse)
后使用Illuminate\Contracts\Auth\Authenticatable
,检查变量,并将其更改为使用期望的参数,该参数是//css
TagsDropdown {
display: none;
}
.img-wrapper:hover TagsDropdown {
display: block;
}
// html
<div class="img-wrapper">
<img
className={classes.img}
src={photo.src}
/>
<div className={classes.tagContainer}>
<Tag
tag={tag}
key={tag}
/>
<TagsDropdown/>
</div>
</div>
的实例。
答案 1 :(得分:0)
由于Auth::login()
希望将Authenticateable模型作为第一个参数,并且您的$response->Login
是用户名,因此您应该首先检查用户。
if($response_status == 200) {
$user = User::whereUsername($response->Login)->firstOrFail();
Auth::login($user, true);
}