gpt4 book ai didi

flutter - 使用 AuthController 传递用户 ID

转载 作者:行者123 更新时间:2023-12-03 02:55:19 25 4
gpt4 key购买 nike

我刚刚使用 aqueduct 作为后端制作了简单的身份验证应用程序。我使用 Aqueduct 文档页面中的代码进行登录和注册。当我在后端使用此代码登录时

 router
.route('/auth/token')
.link(() => AuthController(authServer));

我取回 token , token 类型和到期日期,是否还有机会通过 userId?还是我必须创建自己的 Controller 才能做到这一点?

更新
或者我如何在我的后端保存数据时保存用户 ID
  @Operation.post()
Future<Response> addData(@Bind.body(ignore: ['id']) Data newData) async {
final query = Query<Data>(context)..values = newData;
final insertData = await query.insert();
return Response.ok(insertData);
}

最佳答案

Flutter 前端

最初使用用户名/电子邮件和密码登录。如果用户名和密码有效,您将从服务器获得授权 token 。然后使用该 token 向服务器发出进一步的特权请求。

您无需在客户端上保存有关用户的任何个人数据(电子邮件或密码)。但是,如果您不想让用户下次使用该应用程序时再次登录,您可以保存该 token 。保存 token 时,您应该使用安全存储选项。 flutter_secure_storage插件使用 KeyChain在 iOS 和 KeyStore 上在安卓上。

Aqueduct 后端

您可以在后端使用您想要的所有用户 ID。不过,我不知道是否需要将它们传递给客户端。在后端,您可以查询用户 ID,然后使用它从数据库中获取其他信息。

以下是来自 documentation 的示例:

class NewsFeedController extends ResourceController {
NewsFeedController(this.context);

ManagedContext context;

@Operation.get()
Future<Response> getNewsFeed() async {
var forUserID = request.authorization.ownerID;

var query = Query<Post>(context)
..where((p) => p.author).identifiedBy(forUserID);

return Response.ok(await query.fetch());
}
}

客户端只传入 token 。 Aqueduct 会根据该 token 为您查找用户 ID。现在您知道用户 ID。

您的其他表可以有一个用户 ID 列,以便只有该用户可以保存和检索他们的数据。在上面的例子中,Posts 有一个 Author,一个 Author 有一个 ID,即用户 ID。
where((p) => p.author).identifiedBy(forUserID)

相当于
where((p) => p.author.id).equalTo(forUserID)

您可以在 Advanced Queries 中阅读有关此内容的信息。文档的部分。

关于flutter - 使用 AuthController 传递用户 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61502568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com