对用户进行身份验证并仅提供其相关数据

Posted

技术标签:

【中文标题】对用户进行身份验证并仅提供其相关数据【英文标题】:authenticate user and serve only their related data 【发布时间】:2019-06-29 15:11:36 【问题描述】:

我在 graphcool 中有一个带有这些节点的架构(不确定这里的正确术语是什么……叶子?节点?模型?类型??)

type User @model 
  auth0UserId: String @isUnique
  createdAt: DateTime!
  id: ID! @isUnique
  userIdentifier: String
  bundleIdentifier: String
  updatedAt: DateTime!
  devices: [Device!]! @relation(name: "UserOnDevice")
  tokens: [Token!]! @relation(name: "TokenOnUser")


type Device @model 
  id: ID! @isUnique
  deviceIdentifier: String!
  users: [User!]! @relation(name: "UserOnDevice")
  token: Token @relation(name: "DeviceOnToken")

我想这样做,以便用户必须经过身份验证并与设备数据相关才能对其进行查询。所以,对于这样的查询:

query($deviceIdentifier: String!) 
    device(deviceIdentifier: $deviceIdentifier) 
        id
    

这应该返回null,除非他们经过身份验证并且是指定关系中的用户。我在想我需要一个像这样的权限查询:

query ($node_id: ID!, $user_id: ID!) 
  SomeDeviceExists(filter: 
    id: $node_id,
    users: 
      id: $user_id
    
  )

但事实证明这是无效的。我该怎么做?

【问题讨论】:

【参考方案1】:
query ($node_id: ID!, $user_id: ID!) 
  SomeDeviceExists(filter: 
    id: $node_id,
    users_some: 
      id: $user_id
    
  )

但这确实需要在请求中提交 user_id。

【讨论】:

以上是关于对用户进行身份验证并仅提供其相关数据的主要内容,如果未能解决你的问题,请参考以下文章

防止 Spring Security 通过下一个身份验证提供程序对具有 BadCredentialException 的用户进行身份验证

如何创建 SAMLAuthenticationToken 并将其发送到 SAML 身份验证提供程序

创建通过外部 API 进行身份验证的自定义身份验证提供程序?

如何使用 ASP.NET 和 iframe 跨域对用户进行身份验证?

使用基于 SAML 的基本身份验证进行身份验证?

Xamarin.Auth:使用身份提供者对用户进行身份验证 [xamarin forms - Android]