簡體   English   中英

ASP.NET CORE MVC IDENTITY 如何更改默認登錄頁面的 url?

[英]ASP.NET CORE MVC IDENTITY How to change url of defualt log in page?

我使用身份進行身份驗證。 但是如果我使用 [Authorize] 屬性,我會被重定向到 localhost:7174/Identity/Account/Login?ReturnUrl=%2FUser%2FUser 而我沒有這樣的頁面。 如何更改此 url? 我沒有找到任何可以改變它的方法或屬性。 此外,我還添加了帶有 Scaffold 的 Identity 頁面。 但是即使現在它也說不可能到達這樣的頁面。 我應該怎么做更好?

我不知道什么對你有用,所以這是我的 program.cs

using DreamWeb.Models;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;


var builder = WebApplication.CreateBuilder(args);

builder.Services.AddMvc();
builder.Services.AddControllersWithViews(); 
builder.Services.AddScoped<IUserService, UserService>();
builder.Services.AddDbContext<DreamsContext>(options =>
    options.UseSqlServer("server = SCAT\\SQLEXPRESS; database = dreams_web; Trusted_Connection=True ; MultipleActiveResultSets = true"));
builder.Services.AddDefaultIdentity<UserAccount>(options => options.SignIn.RequireConfirmedAccount = true)
    .AddEntityFrameworkStores<DreamsContext>();
builder.Services.AddAuthentication().AddCookie();


builder.Services.Configure<IdentityOptions>(options =>
{
    options.SignIn.RequireConfirmedPhoneNumber = false;
    options.SignIn.RequireConfirmedEmail = false;
    options.SignIn.RequireConfirmedAccount = false;

    options.Password.RequireUppercase = false;
    options.Password.RequireDigit = false;
    options.Password.RequiredLength = 1;
    options.Password.RequireLowercase = false;
    options.Password.RequireNonAlphanumeric = false;
});

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

如果您在文檔中查看此處似乎有一個選項可以在啟動時傳遞,允許您設置 url 名稱“loginUrl”

UserInteraction LoginUrl、LogoutUrl、ConsentUrl、ErrorUrl、DeviceVerificationUrl 設置登錄、注銷、同意、錯誤和設備驗證頁面的 URL。

所以合理地你應該能夠做到

public void ConfigureServices(IServiceCollection services)
{
    ...
    var builder = services.AddIdentityServer(
      options =>
        {
            ...
            options.loginUrl = "myLoginUrl"
        }
    );
    ...
}

關於更改默認登錄路徑。 我發現的最好方法是在我的 program.cs 中使用 CookieAuthenticationOptions 更改它:

builder.Services.PostConfigure<CookieAuthenticationOptions>(IdentityConstants.ApplicationScheme, options =>
{
    options.LoginPath = "/SignIn";
});

嘗試以其他方式(使用身份服務器)更改它沒有成功。

這對我有幫助: 在 ASP.NET Core 2.2 MVC 和 Identity 中設置登錄路徑

至於第二個問題(關於身份腳手架頁面,無法訪問),我在我的 program.cs 中錯過了這個:

app.MapRazorFiles();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM