laravel 基于 API 响应调用的自定义认证
Posted
技术标签:
【中文标题】laravel 基于 API 响应调用的自定义认证【英文标题】:laravel custom authentication based on API response call 【发布时间】:2019-06-25 16:56:02 【问题描述】:目前我使用 Laravel 5.7 并尝试构建登录机制。类似Custom user authentication base on the response of an API call的情况。
我的情况是我在本地没有自己的数据库和用户表。只需调用 API 通过传递用户名、密码、客户端 ID、客户端密码进行验证。
我对邮递员 API 的请求:
POST Body
"username": "tester",
"password": "ps",
"CLIENT_ID": "xx",
"CLIENT_SECRET": "yy"
API 对 postman 中成功事件的响应。用户信息通过解码在这个 JWT 令牌中。
"token_type": "Bearer",
"id_token": "eyJraWQiOiNGUvdFZC...",
"access_token": "eyJraWQiOi....",
"expire_in": 3600,
"refresh_token": "eyJjdHkiOiJK..."
我希望在 loginContoller 中执行类似操作并使用 Auth::**:
public function postSignIn(Request $request)
$username = strtolower($request->username);
$password = $request->password;
if (Auth::attempt(['username' => $username, 'password' => $password]))
return Redirect::to('/dashboard')->with('success', 'Hi '. $username .'! You have been successfully logged in.');
else
return Redirect::to('/')->with('error', 'Username/Password Wrong')->withInput(Request::except('password'))->with('username', $username);
问题:
如何在 laravel 中实现 API 认证? (使用 guzzle、服务提供者、Authenticatable Contract 和驱动 Auth?)
如何将访问令牌存储在 session/cookie 中,以便在以后每次发送到 API 的每个请求中附加?
刷新令牌失效后如何存储,获取访问令牌?
感谢所有帮助或任何示例/指导。
【问题讨论】:
嗨,尝试使用“护照”-> laravel.com/docs/5.7/passport ... @EhsanKeramat 嗨,但我没有在这个 laravel 应用程序中实现 API。它只是一个瘦客户端 Web 应用程序。据我了解,护照使用api身份验证并建立在oauth2服务器之上。 嗨,看,如果你想在你的网络、应用程序等中使用身份验证...你必须有数据库访问权限、身份验证控制器代码,所以我们使用 laravel 来减少我们的代码并使用稳定的插件更高的安全性和性能,如果您想在您的应用程序中使用身份验证,您必须使用之前测试和使用过的插件,如“护照”或构建您自己的!为了构建您的韩元,请阅读如何处理令牌、用户名、密码、安全性、性能等...在数据库中设置令牌并比较检查用户值!!! (例如去阅读如何构建自己的护照处理)... @JohnnyCc 你找到解决这个问题的方法了吗?我也有同样的问题 我遇到了类似的问题。该场景是使用 C# 输出 json(承载令牌、用户数据)的 API。前端使用 Laravel。看起来很困难,使用 laravel 构建前端但基于 API 响应调用进行身份验证。正如@JohnnyCc 所说,Laravel 没有实现 API(护照),而是作为前端。 【参考方案1】:您不必自己动手,有很多插件可以为您解决问题,就像 lavael 护照一样,使用起来非常简单,您必须看看
【讨论】:
以上是关于laravel 基于 API 响应调用的自定义认证的主要内容,如果未能解决你的问题,请参考以下文章
使用 IdentityServer 与创建基于 JWT 的自定义身份验证
Alamofire 的自定义、基于内容的验证器(在 Swift 中)
Laravel 通过 Passport 实现 API 请求认证:基于 Cookie 的同域名应用篇