在 Angular + WebAPI 应用程序中管理会话

问题描述

我正在创建一个在 angular 和 web api 上运行的应用程序。实际上要求是使用web api而不是rest api。我们需要在 web api 中管理会话。

为此,我在我的 WebAPI 应用程序中添加了以下代码

public class SessionHttpControllerRouteHandler : HttpControllerRouteHandler
    {
        protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            return new SessionControllerHandler(requestContext.RouteData);
        }
    }

public class SessionControllerHandler : HttpControllerHandler,IRequiresSessionState
    {
        public SessionControllerHandler(RouteData routeData)
            : base(routeData)
        {
        }
    }

routes.MapHttpRoute(
                name: "DefaultApi",routeTemplate: "api/{controller}/{action}/{id}",defaults: new { id = RouteParameter.Optional }
            ).RouteHandler = new SessionHttpControllerRouteHandler();

例如,有两个 API 调用。 1 个是登录,另一个搜索调用

在第一次调用中,我将 UserID 添加到 session { HttpContext.Current.Session.Add(key,value);在搜索调用中,我试图检索登录 API 调用时保存在会话中的值 { HttpContext 上下文 = HttpContext.Current; 返回 context.Session[key]; }

我尝试从 Postman 调用 API,一切正常,它正在维护会话。但是当我尝试通过 Web 浏览器从 angular 调用 API 时,会话根本没有检索。 设置值后,在尝试检索相同的值时,http.context.current.session 始终为空。

然后我查了postman,知道有一个cookie,postman自动创建和维护的,就是ASP/Net_SessionId。如果我删除了 cookie,则会话值不会保持不变。

那么,请您帮助我如何在使用 angular 作为前端时维护 web api 中的会话值。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)