2017-10-16 79 views
0

因此,我开始了一系列新的应用程序的基础上我为我的公司内部的一些应用程序。使用我公司的应用程序(我也使用Azure Web应用程序来托管API和SQL),因此我不必以任何特定的方式限制查询结果,因为只有1个用户,所以没有任何用户访问数据的风险他们不应该有。限制简易表查询行与提供的用户ID

但是现在我正在修改这些应用程序以供外部使用,我显然只希望每个用户都可以查询每个表,查找他们应该有权访问的行。

我的第一个想法是根本不允许普通的EasyTable访问,但只是通过精心构建的API公开所有的API,每个API都需要一个UserID作为参数才能工作。

这个选项对我来说很好,但我不确定是否正确,或者仍然允许普通的EasyTable访问,同时仍然允许每个用户只能访问自己的行在每张桌子上。

回答

1

如果您已针对Azure Active Directory,Facebook,Google,Twitter,Microsoft帐户或其他OAuth登录提供程序设置了身份验证,则可以对表设置权限以将特定操作的访问权限限制为仅限经过身份验证的用户,如下所示:

enter image description here

欲了解更多信息,审核How to: Use authentication claims with your tables

关于如何限制数据,以便登录用户只能看到他们的记录,看看这really good tutorial

+0

即使我不打算在练习中做什么,我仍然将您的答案标记为正确。我会发布我实际要做的事情的答案,因为我不想在我的情况下使用身份提供商。 – TKoL

+0

顺便说一句,即使我没有直接使用你的答案,你提供的这些链接提供了一个关于我将如何实施它的最终信息。非常感谢兄弟。 – TKoL

0

在我的情况下,我不想使用身份提供商,我希望我的应用根据电子邮件地址提供自己的身份验证。

我将要有一个用户表,我将基本上只是通过正常的OData API禁止访问。我将提供一个用户可以提供电子邮件地址和密码的API,如果它匹配,我的API将反馈该行的ID(这是一个很长的荒谬字符串)。用户应用程序将能够使用该ID访问其他表。

通过正常的OData API I can use the 'context' object to look at HTTP headers访问我的所有其他表。鉴于HTTPS标头是加密的,我觉得这是一个相对安全的选择。所有的表格方法都需要一个类似[${vendor-prefix}-UserID] = UserID的HTTP标头。

在客户端,我经常使用MobileServiceClient库,其中allows addition of custom headers,所以我可以在需要时添加标头。