Asp.net React + Redux,跟踪已登录的用户?

时间:2017-09-04 11:55:36

标签: asp.net cookies asp.net-web-api asp.net-identity react-redux

我使用本教程为我的WebAPI设置了一个Asp.Net Identity系统:http://www.binaryintellect.net/articles/b957238b-e2dd-4401-bfd7-f0b8d984786d.aspx,一切都很好,唯一的区别是我使用React + Redux作为我的前端发送动作调用负责用户注册和登录的WebAPI。

当注册用户成功创建并添加到数据库时,登录signInManager.SignIn()会返回成功,所以一切都很棒。

但是,对其他WebAPI操作的后续调用不会向用户显示要进行身份验证的情况。我不确定为什么会这样,并且只能假设它必须与我分别使用WebAPI或我的前端不同的事实。

我在此示例后尝试过使用Cookie身份验证,但它没有帮助:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/cookie?tabs=aspnetcore2x

我尝试的另一件事是在前端使用ProxyController。因此,React + Redux在代理控制器操作上运行fetch,然后依次调用WebAPI。我认为如果我对WebAPI的所有动作调用都使用相同的HttpClient(也许它会保留某种形式的状态?),这可能会有效。

下面的代码是我尝试的:

    HttpClient httpClient;

    [HttpGet("[action]")]
    public async Task<JsonResult> Login(string username, string password)
    {
        HttpResponseMessage responseMessage;
        {
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, 
                "http://localhost:62356/api/mywebapi/login?username=" + username + "&password=" + password);
            responseMessage = await httpClient.SendAsync(request);
        }
        var json = JsonConvert.DeserializeObject(await responseMessage.Content.ReadAsStringAsync());

        return new JsonResult(json);
    }

// api/mywebapi/test tries to confirm through signInManager is user is signed in 
//using: (!signInManager.IsSignedIn(HttpContext.User)) which returns false, // if I 
add an [Authenticate] decorator to the 'Test' action function the below code 
returns a 404...
        [HttpGet("[action]")]
        public async Task<JsonResult> Test()
    {
        HttpResponseMessage responseMessage;
        {
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post,
                "http://localhost:62356/api/mywebapi/test");

            responseMessage = await httpClient.SendAsync(request);
        }

        dynamic result = new System.Dynamic.ExpandoObject();

        return new JsonResult(result);
    }

这个等式中是否有我遗漏的东西?

0 个答案:

没有答案