如何将用户数据设为私有,以便只有 owns/created 数据的用户可以看到它?
How to make user data private so only user who owns/created data can see it?
有人能告诉我我需要使用什么来使用户数据保密,只有经过身份验证的用户才能看到他们自己的数据。我应该对我的代码实施什么?
我已经有了基本身份验证并且我有授权用户,但问题是所有数据都可供所有已登录的经过身份验证的用户使用。我正在使用 PostgreSQL 和 Vapor 3 以及一个带后端的新手。
谢谢!
如果您已经实现了基本授权并使用了标准的 Vapor 用户模型,那么您将拥有每个授权用户的唯一 ID。然后,您只需将其作为外键添加到包含您希望保护的数据的每个模型中。当用户回答问题时,确保将当前用户的用户 ID 保存到外键字段中。然后,当您希望检索用户的私人数据时,您只需 select 那些匹配相同用户 ID 的记录。
要在数据库中创建 table,请将其放入模型中:
extension ExampleModel: Migration
{
public static func prepare(on connection: MySQLConnection) -> Future<Void> {
return Database.create(self, on: connection) { builder in
try addProperties(to: builder)
builder.reference(from: \.userId, to: \User.id)
}
}
}
当我创建一个新的(私人)记录时,我将当前用户的 Id 作为参数传递给 init 函数,因此:
init(user:User) throws
{
createdByUserId = user.id!
// initialise the remaining fields as well
}
要将路由中的记录限制为仅由用户创建的记录,我使用:
events.get("/")
{
req -> Future<View> in
let query = try Event.query()
query.filter(\.userID == theUserId )
// the rest of your route
}
有人能告诉我我需要使用什么来使用户数据保密,只有经过身份验证的用户才能看到他们自己的数据。我应该对我的代码实施什么?
我已经有了基本身份验证并且我有授权用户,但问题是所有数据都可供所有已登录的经过身份验证的用户使用。我正在使用 PostgreSQL 和 Vapor 3 以及一个带后端的新手。
谢谢!
如果您已经实现了基本授权并使用了标准的 Vapor 用户模型,那么您将拥有每个授权用户的唯一 ID。然后,您只需将其作为外键添加到包含您希望保护的数据的每个模型中。当用户回答问题时,确保将当前用户的用户 ID 保存到外键字段中。然后,当您希望检索用户的私人数据时,您只需 select 那些匹配相同用户 ID 的记录。
要在数据库中创建 table,请将其放入模型中:
extension ExampleModel: Migration
{
public static func prepare(on connection: MySQLConnection) -> Future<Void> {
return Database.create(self, on: connection) { builder in
try addProperties(to: builder)
builder.reference(from: \.userId, to: \User.id)
}
}
}
当我创建一个新的(私人)记录时,我将当前用户的 Id 作为参数传递给 init 函数,因此:
init(user:User) throws
{
createdByUserId = user.id!
// initialise the remaining fields as well
}
要将路由中的记录限制为仅由用户创建的记录,我使用:
events.get("/")
{
req -> Future<View> in
let query = try Event.query()
query.filter(\.userID == theUserId )
// the rest of your route
}