You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET7降级至.NET6后Cookie认证授权问题求助

解决.NET6 Razor Pages Cookie授权降级错误问题

问题原因

降级到.NET6后出现授权错误,核心原因是**.NET6要求必须明确指定默认的认证方案**,而.NET7会自动处理默认方案的设置。原代码中仅添加了Cookie认证方案,但未将其设为默认,导致系统找不到要使用的认证方案。

修改后的Program.cs代码

using MCI.Data;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.EntityFrameworkCore;
using System;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSession();
builder.Services.AddRazorPages();
builder.Services.AddHttpContextAccessor();

// 关键修改:指定默认认证方案为自定义的"MyLockIdentity"
builder.Services.AddAuthentication("MyLockIdentity")
    .AddCookie("MyLockIdentity", options =>
    {
        options.Cookie.Name = "MyLockIdentity";
        options.LoginPath = "/inside/Lock";
        options.AccessDeniedPath = "/AccessDenied";
        // Admin will logout after 10 minutes.
        options.ExpireTimeSpan = TimeSpan.FromMinutes(10);
    });

builder.Services.AddAuthorization(options =>
{
    options.AddPolicy("AuthorizAdmin", policy => policy.RequireRole("Admin"));
});

var ConString = builder.Configuration.GetConnectionString("constring").ToString();
builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlServer(ConString));

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSession();
app.UseRouting();
app.UseAuthentication();    
app.UseAuthorization();

app.MapRazorPages();

app.Run();

关键修改点说明

  • 指定默认认证方案:将AddAuthentication()改为AddAuthentication("MyLockIdentity"),直接把自定义的Cookie认证方案设为系统默认的认证、挑战方案。也可以通过如下方式更明确配置:
    builder.Services.AddAuthentication(options =>
    {
        options.DefaultAuthenticateScheme = "MyLockIdentity";
        options.DefaultChallengeScheme = "MyLockIdentity";
        options.DefaultSignInScheme = "MyLockIdentity";
    }).AddCookie("MyLockIdentity", options => { ... });
    
  • 移除冗余的AddMvc():AddRazorPages()已经包含了Razor Pages所需的Mvc核心服务,无需重复添加。

这样修改后,项目在.NET6环境下就能和.NET7中一样正常处理Cookie认证授权了。

内容的提问来源于stack exchange,提问作者Hammad Maqbool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:57:12