提问者:小点点

-授权-不使用2 ASP。NET MVC控制器


我正在构建一个ASP。NET MVC web应用程序,带有2个控制器,1个向API发送请求,另一个将处理身份验证。应用程序构建很好,但授权标签不起作用,我可以轻松访问机密页面,而无需cookie。

这是访问控制器:

public class AccessController : Controller
{
    public IActionResult Index()
    {
        return View();
    }

    public IActionResult Login()
    {
        return RedirectToAction("Index");
    }

    [Authorize]
    public IActionResult Secret()
    {
        return View();
    }
}

这是启动。cs文件:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        //services.AddControllers();
        // Add session
        services.AddDistributedMemoryCache();
        services.AddSession();

        // Add services to the container.
        services.AddSingleton<IClient, ClientConcessionario>();

        services.AddAuthentication("CookieAuth").AddCookie("CookieAuth", config =>
        {
            config.Cookie.Name = "CookieAuth";
            config.LoginPath = "/Access/Login";
        });

        services.AddControllersWithViews();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

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

        app.UseRouting();
        app.UseAuthorization();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapDefaultControllerRoute();
        });
        ;
    }
}

我可以查看两个控制器的所有URL,但如果没有cookie,我将无法访问机密页面。有线索吗?


共1个答案

匿名用户

在用户外出之前,应该在Configure方法中调用UseAuthentication()和UseAuthorization()。