.NET Core 3 Cookie身份验证未设置身份

时间:2019-02-03 15:38:37

标签: c# authentication .net-core .net-core-3.0 asp.net-core-3.0

Windows 10,.NET Core 3.0

我有一个空白的mvc项目(dotnet新的mvc)。

家庭索引:

public async Task<IActionResult> Index()
    {
        if(User.Identity.Name == null) {
            var props = new AuthenticationProperties
            {
                IsPersistent = true,
                ExpiresUtc = DateTime.UtcNow.AddMinutes(30)
            };

            var identity = new ClaimsIdentity(new[]
            {
                new Claim(ClaimTypes.Name, "sometestuser")
            }, CookieAuthenticationDefaults.AuthenticationScheme);
            await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(identity), props);
        }

        return Content(User.Identity.Name);
    }

Startup.cs(ConfigureServices和Configure)

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(CookieAuthenticationDefaults.AuthenticationScheme);
app.UseAuthentication();

刷新索引时,User.Identity.Name始终为null,并且从未设置IsAuthentication。

2 个答案:

答案 0 :(得分:1)

在Configure方法中,UseAuthentication方法应位于UseMvcWithDefaultRoute之前。它必须在此之前,因为AuthenticationMiddleware随后将在请求到达您的Index方法之前设置HttpContext.User。

请参阅链接 https://docs.microsoft.com/en-us/aspnet/core/security/authentication/cookie?view=aspnetcore-2.2

答案 1 :(得分:0)

您是否尝试过以下操作:

install.packages("data.table", repos="https://Rdatatable.gitlab.io/data.table")
library(data.table)
ans_df = nafill(df, fill=0)
setnafill(df, fill=0) # this one updates in-place

这应该检索您要查找的内容。