我很遗憾地问这样一个基本问题,但它让我疯了。 我有一个asp net core 2应用程序,它使用标准授权过程(通过EF和使用MySQL数据库)。一切正常 - 整个登录过程和后续路由 - 直到我用一个对特定控制器没有足够权限的用户进行测试。我在ConfigureServices中有以下内容:
services.ConfigureApplicationCookie (options => {
options.LoginPath = new PathString ("/Account/LogIn");
options.AccessDeniedPath = new PathString ("/Account/AccessDenied");
});
控制器(类AccountController)如下:
[AllowAnonymous]
public IActionResult AccessDenied (string returnUrl)
{
ViewBag.PageHeading = "Authorisation Problem";
return View ();
}
登录工作正常但是,当调用受保护的控制器时,浏览器会显示它正在查找http://localhost:55800/Account/AccessDenied?ReturnUrl=%2F但未到达控制器并返回404。
我尝试过多种路由组合 - 属性和全局,还有'returnUrl'大写但没有。问题似乎是路由系统期望GET中的第一个参数前面带有'/',后面的参数跟在'?'之后。但是,此URL会自动生成。
我错过了一些基本的东西吗?我将非常感谢您对此的任何帮助,谢谢。
答案 0 :(得分:0)
飞象!
我刚刚找到了完成这项工作的路线{controller=Account}/{action=Login}/{*parms}
。