Web API会话

时间:2015-09-25 13:46:36

标签: asp.net asp.net-web-api

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

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

现在我想保护Web API有两个原因。

  1. 安全性,因此知道谁应该访问哪些数据
  2. 访问,因此它知道它应该连接到哪个数据库
  3. 目前,我使用自己的用户和组表来处理我自己的身份验证。

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

    我考虑过在登录时针对Active Users表存储唯一的会话ID,然后在调用Web API时将此令牌/ id作为参数传递,然后Web API检查活动用户中是否存在此令牌表,如果是,则检索用户/组的权限,并检查它应连接到哪个数据库。

    听起来这听起来有用吗?还是我有一种更好的方法?

    由于

1 个答案:

答案 0 :(得分: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您可以选择要连接的数据库。