在我的Web服务(WebApi 2.0)中,我实现了IAuthenticationFilter
来检查HttpContext.Current.Session
中的一些值(例如HttpContext.Current.Session [“TokenId”])并确定用户是否被授权继续或不。我已在FilterConfig
类中注册了此过滤器,如下所示,以便每当有人调用Web Api时都会执行此过滤器。
config.Filters.Add(new WebApiAuthenticationFilter());
我的MVC 4应用程序有自定义AuthorizeAttribute
。为每个控制器操作执行此属性。此属性在内部调用我的Web Api。调用Web Api时,将自动执行身份验证过滤器,告知用户是否已获得授权。这就是我在MVC应用程序中了解用户授权状态的方法。
我发现HttpContext.Current.Session["TokenId"]
仅在第一次Web Api调用时返回null
。然后,我在HttpContext.Current.Session["TokenId"]
中得到正确的值。
问题:
Session
中<{> 1}}中的值仅在第一次网络Api呼叫期间无法使用? 注意:
AuthenticationFilter
不为空。只有Session中存储的数据(如TokenId)不可用。HttpContext.Current.Session
,或者如果我让呼叫继续进行Web Api控制器,则可以使用相同的TokenId。 Session
中的Session
仅显示该值。!AuthenticationFilter
文件中的以下事件的Web Api, SessionStateBehavior
已设置为Required
。
protected void Application_PostAuthorizeRequest() { if(IsWebApiRequest()) {HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required); } }