0

AccessDeniedのルーティングに問題があります。おそらくログイン/ログアウトのパスもあります。このプロジェクトは魔法のないデフォルトのものです。さて、AccessDenied()メソッドを持つAccountコントローラが存在します。私は今、何をしようとしているASP.NETコアの変更AccessDenied route

される(これは、インターネットの商品が提供するソリューションです)

services.Configure<CookieAuthenticationOptions>(options => 
{ 
    options.LoginPath = new PathString("/"); 
    options.AccessDeniedPath = new PathString("/InactiveSponsor"); 
    options.LogoutPath = new PathString("/"); 
}); 

しかし、それは全く違いもしません。そう考えていますか?なぜそれがうまくいかないのか、それをうまく動作させる方法についてのアイデア。

は、ここで私はそれが古い質問です知っているが、ケース誰かにASP.NETで同様の問題が発生した

services.AddIdentity<ApplicationUser, IdentityRole>(op=>op.Cookies.ApplicationCookie.AccessDeniedPath = new PathString("/InactiveSponsor")) 
     .AddEntityFrameworkStores<SponsorContext>() 
     .AddDefaultTokenProviders(); 

それとも

 services.Configure<IdentityOptions>(opt => 
     { 
      opt.Cookies.ApplicationCookie.LoginPath = new PathString("/aa"); 
      opt.Cookies.ApplicationCookie.AccessDeniedPath = new PathString("/InactiveSponsor"); 
      opt.Cookies.ApplicationCookie.LogoutPath = new PathString("/"); 
     }); 
+0

あなたが投稿できる 'Configure'メソッドのコードを?おそらく 'CookieAuthenticationOptions'をオーバーライドします。 –

+0

@deadcaglinがスタートアップ全体を追加しました –

答えて

3

ですコア2では、services.Configure<CookieAuthenticationOptions>(...)services.ConfigureApplicationCookie()と置き換えることができます。

あなたStartup.csでこれを置き換えます。これで

services.Configure<CookieAuthenticationOptions>(options => 
{ 
    options.LoginPath = new PathString("/[your-path]"); 
    options.AccessDeniedPath = new PathString("/[your-path]"); 
    options.LogoutPath = new PathString("/[your-path]"); 
}); 

services.ConfigureApplicationCookie(opt => 
{ 
    options.LoginPath = new PathString("/[your-path]"); 
    options.AccessDeniedPath = new PathString("/[your-path]"); 
    options.LogoutPath = new PathString("/[your-path]"); 
} 
+0

あなた –

0

を試してみて、私のStartup.cs

public Startup(IHostingEnvironment env) 
{ 
    var builder = new ConfigurationBuilder() 
     .SetBasePath(env.ContentRootPath) 
     .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
     .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) 
     .AddEnvironmentVariables(); 

    if (env.IsDevelopment()) 
    { 
     // This will push telemetry data through Application Insights pipeline faster, allowing you to view results immediately. 
     builder.AddApplicationInsightsSettings(developerMode: true); 
    } 
    Configuration = builder.Build(); 
} 

public IConfigurationRoot Configuration { get; } 

// This method gets called by the runtime. Use this method to add services to the container. 
public void ConfigureServices(IServiceCollection services) 
{ 
    // Add framework services. 
    services.AddApplicationInsightsTelemetry(Configuration); 

    string connection = "DefaultConnection"; 
    //services.AddDbContext<SponsorContext>(options => options.UseSqlServer(connection)); 
    services.AddDbContext<SponsorContext>(options => options.UseSqlServer(Configuration[$"Data:{connection}"])); 

    services.AddIdentity<ApplicationUser, ApplicationRole>() 
     .AddEntityFrameworkStores<SponsorContext>() 
     .AddDefaultTokenProviders(); 


    services.AddMvc(); 


    services.AddAuthorization(options => 
    { 
     options.AddPolicy(Policies.RequireAdmin, policy => policy.RequireRole(Roles.Administrator)); 
     options.AddPolicy(Policies.IsSponsor, policy => policy.RequireRole(Roles.Sponsor)); 
     options.AddPolicy(Policies.IsSponsorOrAdmin, policy => policy.RequireRole(Roles.Administrator, Roles.Sponsor)); 
    }); 

    /* 
    * AddTransient Different on each instance/use 
    * AddScoped Different instance on a per request basis 
    * AddSingleton Always the same instance 
    */ 
    //DI 
    services.AddScoped<ManageUserRepository>(); 
    services.AddScoped<ISponsorManagement, SponsorRepository>(); 
    services.AddScoped<ISponsorRead, SponsorRepository>(); 
} 

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
    loggerFactory.AddDebug(); 

    app.UseApplicationInsightsRequestTelemetry(); 

    if (env.IsDevelopment()) 
    { 
     app.UseDeveloperExceptionPage(); 
     app.UseBrowserLink(); 
    } 
    else 
    { 
     app.UseExceptionHandler("/Home/Error"); 
    } 

    app.UseApplicationInsightsExceptionTelemetry(); 

    app.UseStaticFiles(); 
    app.UseIdentity(); 


    app.UseMvc(routes => 
    { 
     routes.MapRoute(
      name: "default", 
      template: "{controller=Home}/{action=Index}/{id?}"); 
    }); 
}