从Beta 8迁移到RC1后的ASP.NET 5(VNEXT)Cookie身份验证问题

本文关键字:VNEXT Cookie 问题 身份验证 NET ASP Beta 迁移 后的 RC1 | 更新日期: 2023-09-27 18:24:02

我已经在ASP.NET 5(VNext)中创建了一个应用程序好几个月了,并且随着ASP.NET 5的新版本的发布,我一直在稳步升级应用程序。在将RC1应用于我的Beta 8应用程序后,我的Cookie验证停止工作。当页面需要身份验证/授权时,web浏览器只显示一个空白屏幕。

在Startup.cs中,我的ConfigureServices方法中有以下代码:

services.AddAuthentication();

在Startup.cs中,我的配置方法中有以下代码:

app.UseCookieAuthentication(options =>
{
    options.AccessDeniedPath = new PathString("/Account/AccessDenied");
    options.LoginPath = new PathString("/Account/Login");
    options.SessionStore = (new MemoryCacheSessionStore());
    options.CookieName = "D1_AWARE";
    options.LogoutPath = new PathString("/Account/LogOut");
    options.ExpireTimeSpan = new TimeSpan(1, 0, 0);
});

在我的HomeController中,我的Index()方法标记了"Authorize"属性,如下所示:

[Authorize]
public IActionResult Index()
{
    return View();
}

如果我删除Authorize属性,一切都可以正常工作(但绕过了安全性)。如果我离开它,浏览器将变为空白。

正如我之前所说的,在RC1之前一切都很好。如果有人能帮我,我将不胜感激。

从Beta 8迁移到RC1后的ASP.NET 5(VNEXT)Cookie身份验证问题

看起来他们在Beta 8和RC 1之间更改了一些选项。试着把它改成我下面使用的:

 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
 {
     // ...
     app.UseCookieAuthentication(options =>
        {
            options.AutomaticAuthenticate = true;
            options.AutomaticChallenge = true;
            options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
            options.SlidingExpiration = true;
            options.LoginPath = new PathString("/Account/Login");
            options.LogoutPath = new PathString("/Account/Logout");
            options.AccessDeniedPath = new PathString("/Account/AccessDenied");
            options.AuthenticationScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.CookieSecure = CookieSecureOption.SameAsRequest;
            options.CookieHttpOnly = true;
        });
    // ...
}

你有一些不同的设置(比如没有滑动过期),但这应该是一个良好的工作开始。

神奇之处似乎就在这几行:

options.AutomaticAuthenticate = true;
options.AutomaticChallenge = true;

它们强制ASP.net 5处理重定向到登录页面的操作,并使Authorize属性生效。

其他升级程序可能会发现此链接很有用:http://wildermuth.com/2015/11/18/Upgrading_ASP_NET_5_Beta_8_to_RC1

重点是这个应用程序。UpseCookieAuthentication已移至Startup.cs 中的Configure