WebSecurity.CurrentUserId = -1

时间:2014-06-05 19:10:18

标签: c# asp.net-mvc asp.net-web-api simplemembership

开发一个应该登录/注册并从数据库中读取一些数据的Android应用程序。

我有 WebApi 登录控制器。

这是我的问题

[HttpPost]
public HttpResponseMessage Post(Login model)
{
    if (WebSecurity.Login(model.UserName, model.Password))
    {
        int userid = WebSecurity.CurrentUserId;// <- this value is = -1
        string name = WebSecurity.CurrentUserName;// <- this value is = ""
        some query where i need the user id(userid);
    }
    else 
        ...
}

为什么在成功登录后我仍然将-1作为值?

我注意到即使在mvc项目中也会发生同样的事情,但是在成功登录后,用户被重定向到列出数据的另一个页面(当执行该控制器时,当前用户ID已经更新)。

1 个答案:

答案 0 :(得分:1)

WebSecurity.Login设置一个cookie。在用户通过身份验证之前,框架必须重新读取该cookie,这意味着必须发生另一个Web请求。

换句话说,您必须重定向到另一个页面,否则必须先进入其他Web请求才能对请求进行身份验证。