我正在构建一个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,我将无法访问机密页面。有线索吗?
在用户外出之前,应该在Configure方法中调用UseAuthentication()和UseAuthorization()。