2015-09-25 58 views
0

我有一个ASP.net应用程序,它提供了大部分的主界面,但后来主要由JavaScript驱动,因为它主要是基于选项卡的应用程序,它通过Web API检索数据并更改Div内容。Web API会话

这将是一个基于云的解决方案,因此多个客户连接并将数据存储在他们自己的数据库中。

现在我想确保Web API的安全性有两个原因。

  1. 安全性,因此它知道谁应该访问什么数据
  2. 访问,因此它知道它应该连接到

该数据库目前,我处理我自己的身份验证与我自己用户和组的表格。

处理Web API方面的最佳方式是什么?

我想在登录时存储一个Active Users表的唯一会话ID,然后在调用Web API时这个token/id作为参数传递,然后Web API检查这个token是否存在于Active用户表,如果是这样,则检索用户/组的权限,并检查它应该连接到哪个数据库。

这听起来像是会起作用,还是有更好的方法可以忽略?

谢谢

+0

看起来你正在尝试重塑[ASP.Net Identity](http://www.asp.net/identity/overview/getting-started)框架。 –

回答

0

我会在WebApi配置中添加认证过滤器,并在Web API方法中添加Authorize属性。为了访问用户会话,你可以使用下面的代码。

protected void Application_PostAuthorizeRequest() 
    { 
     if(IsWebAPIRequest()) 
     { 
      HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required); 
     } 
    } 

    private bool IsWebAPIRequest() 
    { 
     return HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath.StartsWith("~/api"); 
    } 

根据用户的会话ID,您可以选择要连接的数据库。