【发布时间】:2021-10-27 22:39:11
【问题描述】:
url 在任何进程都返回登录路径,我认为ConfigureServices 中的代码顺序错误我该如何解决?
public void ConfigureServices(IServiceCollection services)
{
services.AddDI();//custom Startup Collection
services.AddDbContext<AppDbContext>();
services.AddIdentity<AppUser, AppRole>(options =>
{
options.SignIn.RequireConfirmedEmail = true;
options.User.RequireUniqueEmail = true;
}).AddErrorDescriber<CustomIdentityValidator.CustomIdentityValidator>().AddEntityFrameworkStores<AppDbContext>()
.AddDefaultTokenProviders();
services.AddAutoMapper(typeof(Startup));//
services.AddControllersWithViews();
services.AddAuthentication();
services.AddRazorPages();
services.Configure<DataProtectionTokenProviderOptions>(options => options.TokenLifespan = TimeSpan.FromHours(5));
services.Configure<EmailOptions>(Configuration);//appsettingstekileri değiştirecek
services.AddCors(opt =>
{
opt.AddPolicy("global", cors =>
{
cors.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
});
});
services.ConfigureApplicationCookie(options =>
{
options.Cookie.Name = "test";
options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Strict;
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromDays(20);
options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.SameAsRequest;
options.LoginPath = "/Home/SignIn";
options.AccessDeniedPath = "/Home/AccessDenied";
});
}
配置:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, UserManager<AppUser> userManager, RoleManager<AppRole> roleManager, IWebSiteBussRepository webSiteBussRepository)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
IdentityInitializer.SeedData(userManager, roleManager).Wait();
IdentityInitializer.StaticPage(webSiteBussRepository).Wait();
app.UseStatusCodePagesWithReExecute("/Home/StatusCode", "?code={0}"); //en üstte olmalı 404 page 'i için yazdım
app.UseStaticFiles();
app.UseRouting();
//app.UseIdentityServer();
app.UseAuthentication();
app.UseAuthorization();
app.UseCors("global");
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllerRoute(
name: "areas",
pattern: "{area}/{controller=Home}/{action=Index}/{id?}"
);
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}"
);
});
}
【问题讨论】:
-
你确定你已经登录并在端点上放了一些合适的授权吗?如果是这样...我们是否可以看到您的
Configure方法(ConfigureServices注册东西,Configure使用它们来构建管道) -
@GordonKhanhNg。我在下面发布了
Configure。 -
您可以检查Asp.net Core Middleware order、
UseCors、UseAuthentication和UseAuthorization必须按显示的顺序出现:对UseCors的调用必须放在UseRouting之后,但在UseAuthorization、like this 之前。尝试改变它。
标签: c# asp.net-core .net-core asp.net-core-mvc