Javascript 如何使用auth0 js WebAuth识别新用户?
我试图保持简单,并使用auth0 js WebAuth对用户进行身份验证。但是,由于涉及重定向,我无法控制注册功能 我的具体用例是使用GraphTool调用Javascript 如何使用auth0 js WebAuth识别新用户?,javascript,authentication,auth0,graphcool,Javascript,Authentication,Auth0,Graphcool,我试图保持简单,并使用auth0 js WebAuth对用户进行身份验证。但是,由于涉及重定向,我无法控制注册功能 我的具体用例是使用GraphTool调用createUsergraphql变体来在我的数据库中创建一个用户,但显然,我只想在该用户是新用户时执行此操作 我的问题:使用auth0 js,在从auth0重定向回我的客户端应用程序后(假设身份验证成功),是否可以确定用户是我的客户端应用程序中的新用户还是现有用户 这里有两种通用方法,都要求您在收到Auth0令牌后将其保存在本地存储中。您可
createUser
graphql变体来在我的数据库中创建一个用户,但显然,我只想在该用户是新用户时执行此操作
我的问题:使用auth0 js,在从auth0重定向回我的客户端应用程序后(假设身份验证成功),是否可以确定用户是我的客户端应用程序中的新用户还是现有用户 这里有两种通用方法,都要求您在收到Auth0令牌后将其保存在本地存储中。您可以为GraphQL客户端使用中间件,该中间件检查本地存储中每个请求的令牌,并将其作为
Authorization:Bearer
标头(如果存在)包含
现在让我们看看这两种方法
始终尝试创建用户
一收到令牌就尝试使用createUser
变异创建用户是一种相当简单的方法。这就是突变的样子:
mutation signUp($token: String!) {
createUser(authProvider: {
auth0: {
idToken: $token
}
}) {
id
}
}
现在,如果令牌有效并且与GraphTool中Auth0集成的配置相匹配,则有两种可能的情况。注意,如果所嵌入的auth0UserId
匹配,则令牌对应于用户
- 已存在与令牌对应的注册用户。在这种情况下,将返回GraphQL错误
(与比较)。在应用程序中,您可以捕获此错误以正常进行代码3023:CannotSignUpUserWithCredentialsExist
- 尚未有与令牌对应的注册用户。
变异将返回createUser
,一切正常id
user
查询来执行以下操作:
query {
user {
id
}
}
同样,存在与上述相同的两种情况:
- 已存在与令牌对应的注册用户。在这种情况下,查询返回一个
对象以及相应的useruser
。因此,我们可以在应用程序中正常进行流程id
- 尚未有与令牌对应的注册用户。从
查询返回的日期将为空,因此我们需要调用user
变体,或者切换到注册表单或类似的表单createUser
将其与GraphTool文档中的进行比较。在这种情况下,最简单的解决方案是使用auth0规则并使用context.stats.loginsCount字段来检测用户是否是新用户。 您可以使用规则在令牌中添加context.stats.loginsCount字段值作为自定义声明。因此,在应用程序中,可以向端点发出HTTP请求以获取令牌数据
function (user, context, callback) {
const count=context.stats.loginsCount;
context.idToken["http://mynamespace/logincounts"] = count;
callback(null, user, context);
}
如果计数等于1,则在数据库中创建用户