【发布时间】:2021-07-27 19:10:00
【问题描述】:
我有一个带有身份和 2 个页面的 ASP.Net 核心 3.1 应用程序:索引和私有(需要授权)。 当我直接浏览到私人页面时,我希望应用程序将我重定向到登录页面。 然而,浏览器却显示 {"message":"Unauthorized"}。 该消息来自哪里,为什么没有重定向到登录?
(导航到登录 /Identity/Account/Login 直接会显示登录页面)
Startup.cs
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<BackendUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
services.ConfigureApplicationCookie(options =>
{
options.LoginPath = $"/Identity/Account/Login";
options.LogoutPath = $"/Identity/Account/Logout";
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
app.UseStatusCodePages();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}
}
控制器
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
[Authorize]
public IActionResult Private()
{
return View();
}
}
【问题讨论】:
-
如果你删除
app.UseStatusCodePages会发生什么? -
同样没有 app.UseStatusCodePages