Identity Server / ASP Identity非常新,因此我希望我能对情况做充分的解释。
我遇到了一个问题,即如果发现我的Web应用程序未经授权,我的Web应用程序将尝试导航到Account / AccessDenied控制器和操作...但是这种精确的控制器和操作不存在。
我尝试了以下操作,但是我不确定它是否确实在按照我的想法做
services.ConfigureApplicationCookie(options =>
{
options.AccessDeniedPath = $"{config.IDServUrl}/Identity/Account/AccessDenied";
options.LoginPath = $"{config.IDServUrl}/Identity/Account/Login";
options.LogoutPath = $"{config.IDServUrl}/Identity/Account/Logout";
});
我的控制器或其中的操作具有Authorize
属性,我使用策略将其锁定。该部分可以正常工作,并且如果用户被授权,则可以成功登录/重定向到应用程序。
如果未经授权,现在会发生什么:
https://myapp/account/accessdenied
Account/AccessDenied
在我的应用程序中不存在,在我的Identity Server应用程序中也不存在。如果用户无权访问某些内容,则Identity Server将使用/Identity/Account/AccessDenied
。
所有这些都是默认设置-我对此没有做任何更改。
所以我想弄清楚的是要么告诉我的应用去https://MyIDSrvApp/Identity/Account/AccessDenied
(因为它已经存在),要么我必须在每个应用中手动创建一个带有AccessDenied Action的帐户控制器由IDSrv保护。
由于我没有在任何地方进行手动设置,因此我对此行为,如何最好地处理以及我的应用程序甚至一开始就从哪里获得/account/accessdenied
尚不清楚。
答案 0 :(得分:0)
在cookie中设置了拒绝访问的默认路径。因此,它是外部身份服务器。要自定义访问被拒绝的路径,请使用AddCookie()上的选项
.AddCookie("Cookies", options =>
{
options.AccessDeniedPath = "/Account/oops";
})