Web API验证用户并检查是否可以访问资源

时间:2015-01-16 12:23:54

标签: c# asp.net authentication asp.net-web-api

我需要建议。我正在为我的应用构建一个Web API,我需要授权使用它的用户。用户可以访问他的数据,但也可以访问其他用户数据。在我的数据库中,我管理用户以及他们有权访问的其他用户(您可能会想到它就像在Facebook中用户可以访问他的个人资料和他的朋友个人资料,但不能访问其他人的个人资料)。

在我的应用中,用户输入用户名和密码,并在设备上加密保存。它们稍后(通过SSL)在每次调用时发送到API - 我所做的是实现基本身份验证。如果有更好的“最佳实践”,请随时提出建议 - 我是新手。

到目前为止它的确有效 - 但问题是像这样工作

  1. 一旦经过身份验证的用户也可以访问其他个人资料 - 我想要做的是让他只获取属于他的个人资料(http://myaddress.com/Users/ {id})和他拥有的项目({{ 3}} {id} / items) - 而不是其他用户的个人资料和项目。
  2. 如果用户尝试访问他所连接的其他用户的个人资料或项目,则允许该访问。
  3. 我想到的是将请求的URI传递给我的登录方法,然后检查用户尝试访问的用户/资源,然后检查数据库 - 但这似乎是很多工作和很多IF语句

    所以在我开始写作之前,我想我会问是否有更好的方法来做到这一点。我有HttpActionContext,我只是不知道如何使用它对我有利。

    希望我清楚我的问题。如果没有,请随时要求澄清。

1 个答案:

答案 0 :(得分:0)

因此,您可以根据每个API请求发送的凭据来识别用户。可以切换一些基于令牌的流,该用户只进行一次身份验证并获取令牌(行为类似于用户凭据),然后在每个资源请求上将其发送到后端API。然后你可以控制令牌,撤销访问等。你可以做什么样的权限服务,所有资源/对象都附加了权限,然后只是为用户读取/写入这个对象分配所需的持久性。实施可能是一项艰巨的任务。我的意见。