WebAPI没有';t通过控制器维护FormsAuthentication

本文关键字:控制器 维护 FormsAuthentication 没有 WebAPI | 更新日期: 2023-09-27 17:59:20

情况如下:

我拥有一个AccountController,它继承自ApiController,看起来像这个

    [HttpPost]
    [ActionName("Login")]
    public HttpResponseMessage Login()
    {
        string emailOrUsername = base.Request.GetQueryNameValuePairs().ElementAt(0).Value;
        FormsAuthentication.SetAuthCookie(emailOrUsername, false);
        return Request.CreateResponse<string>(HttpStatusCode.OK, emailOrUsername);
    }
    [HttpGet]
    [Authorize]
    [ActionName("Logout")]
    public HttpResponseMessage Logout()
    {
        FormsAuthentication.SignOut();
        return Request.CreateResponse<string>(HttpStatusCode.OK, "Hope to see you again!");
    }

我还拥有一个MessageController,它也继承自ApiController,看起来像这样:

    [HttpPost]
    [Authorize]
    [ActionName("ReceiveMessage")]
    public HttpResponseMessage ReceiveMessage()
    {
        return Request.CreateResponse<string>(HttpStatusCode.OK, "Successfully received your message");
    }

所以,AccountController工作得很好,我登录并可以注销。这就是棘手和令人困惑的部分的开始。由于我在同一台计算机(localhost)上进行测试,一旦获得授权,我就可以访问ReceiveMessage。到目前为止还不错。

我现在已经编辑了Documents''IISExpress''config''applicationhost.config并编辑了绑定:bindingprotocol="http"bindingInformation=":60967:"

这样我就可以从另一台设备访问我的WebApi了。我可以登录和注销,但我不能从这个新设备访问ReceiveMessage(登录后)——而在本地主机上,我可以做任何我想做的事情。

我做错了什么?(这是一个示例,我计划让多个用户连接到api,所以在某个地方有一个静态var不是一个选项)

WebAPI没有';t通过控制器维护FormsAuthentication

浏览器运行良好,@charlie Brown是正确的,问题与cookie有关——我是从统一应用程序访问它的