Asp.net Web API会话

Asp.net Web API会话,asp.net,asp.net-web-api,Asp.net,Asp.net Web Api,我有一个ASP.net应用程序,它提供了大部分主界面,但主要由Javascript驱动,因为它主要是一个基于选项卡的应用程序,通过Web API检索数据并更改Div内容 这将是一个基于云的解决方案,因此多个客户连接并将数据存储在他们自己的数据库中 现在,出于两个原因,我想保护Web API 安全性,所以它知道谁应该访问什么数据 Access,因此它知道应该连接到哪个数据库 目前,我使用自己的用户和组表处理自己的身份验证 处理Web API端的最佳方法是什么 我考虑在活动用户登录时针对活动用户表存

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

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

现在,出于两个原因,我想保护Web API

  • 安全性,所以它知道谁应该访问什么数据
  • Access,因此它知道应该连接到哪个数据库
  • 目前,我使用自己的用户和组表处理自己的身份验证

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

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

    这听起来是可行的还是有更好的方法我忽略了


    谢谢

    我将在WebApi配置中添加身份验证过滤器,并在WebApi方法中添加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,您可以选择要连接的数据库

    看起来您正在尝试重新创建框架。