c# - dotnet core authorize 始终重定向到身份默认登录页面
问题描述
我在中创建自定义登录页面pages/login.cshtml
,并且我将[authorize]
配置设置startup.cs
为重定向到/login
,但它保持重定向到Identity/Account/Login
。
这是我的startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.Configure<IdentityOptions>(options =>
{
// Password settings.
options.Password.RequireDigit = true;
options.Password.RequireLowercase = true;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequireUppercase = true;
options.Password.RequiredLength = 6;
options.Password.RequiredUniqueChars = 1;
// Lockout settings.
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
options.Lockout.MaxFailedAccessAttempts = 5;
options.Lockout.AllowedForNewUsers = true;
// User settings.
options.User.AllowedUserNameCharacters =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
options.User.RequireUniqueEmail = false;
});
services.ConfigureApplicationCookie(options =>
{
// Cookie settings
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(5);
options.LoginPath = "/Login";
options.AccessDeniedPath = "/AccessDenied";
options.LogoutPath = "/Logout";
options.ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter;
options.SlidingExpiration = true;
});
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Dashboards/Dashboard1", "");
options.Conventions.AllowAnonymousToPage("/Login");
});
}
我已经指定了loginpath = "/login"
,但它总是回到身份默认页面,为什么以及如何解决它?
解决方案
对于这个问题,试试services.PostConfigure<CookieAuthenticationOptions>
像
services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Dashboards/Dashboard1", "");
options.Conventions.AllowAnonymousToPage("/Login");
});
services.PostConfigure<CookieAuthenticationOptions>(IdentityConstants.ApplicationScheme,
opt => {
//configure your other properties
opt.LoginPath = "/Login";
});
推荐阅读
- html - 在 Elm 中更新 contenteditable div 时光标位置丢失
- npm-install - 在 Windows 10 上设置 NPM
- php - 如何从不相关的表中创建视图
- angular - Angular 6交互式递归对象列表
- c++ - 对结构向量进行两次排序
- java - 将字节数组转换为 OutputStream
- javascript-automation - 使用 JavaScript 与 AppleScript 的 MacOS 联系人详细信息
- node.js - 在不查询文档的情况下更新部分字符串
- python - 循环遍历 Python 中的列表,增加值,同时在每次迭代时遍历列表
- rust - 为什么 Rust 的 STM32 只读数据集的内容在目标文件和 ELF 文件之间存在差异?