在Azure移动服务中扩展用户身份验证对象
问题描述:
是否可以在WAMS中的服务器上的用户对象中添加其他属性?我想将我的用户表的Id主键存储在我的表格脚本中(安全)使用。目前唯一的ID是供应商特定的身份验证ID,但我希望能够允许用户选择身份验证方法。目前我(简化)表的设计如下:在Azure移动服务中扩展用户身份验证对象
用户表:
- ID
- googleId
- twitterId
- facebookId
- 的名字,等...
联盟表
- ID
- 用户id
- 姓名等
我想存储在排名表的用户id字段中的用户主键,然后对其进行查询,以确保只有用户去看看他们创建的联赛。目前,表脚本中的用户对象通过带Google/Twitter/Windows身份验证令牌的User对象发送,并且我必须执行查询以获取主键用户标识,每次我想对表执行操作时一个userId列。
理想的解决办法是,当我的用户表中插入脚本被称为上注册,登录我可以这样做:
// PSEUDO CODE
function insert(item, user, request) {
var appUserId;
Query the user table using the user.userId Google/Twitter/Facebook id
If user exists {
// Set a persisted appUserId to use in all subsequent table scripts.
user.appUserId = results.id;
} else {
Set the GooTwitFace columns on the user table, from user.userId
insert the user then get the inserted record id
// Set a persisted appUserId to use in all subsequent table scripts
user.appUserId = insertUserPK;
}
}
然后,在随后的表脚本,我想在查询中使用user.appUserId
答
如果你所要做的只是授权用户只能访问他们自己的数据,我不确定你甚至需要“用户”表。只需在用户对象上使用特定于提供者的userId来查询“联盟”表(确保userId列已编入索引)。这些值将是特定于提供者的,但这不应该有任何区别。
如果您试图在整个用户的Google/Facebook/Twitter登录中保留单一用户身份的概念,那么您需要一个“用户”表以及您所描述的查找类型是一个更复杂的问题。我们希望为这种情况提供支持作为一个开箱即用的功能。自己做这件事可能(但相当麻烦),让我知道如果这是你想要做的。
谢谢Yavor,有多个供应商的用户ID是我想要做的。我想解决我的问题的另一种方法可能是会话对象? – conradj 2013-05-08 09:23:35