ASP.Net内核中的授权
我正在开发一个管理仪表板面板,我已经为仪表板创建了一个介绍页面,用户可以在那里登录 我有四种类型的用户:管理员、站点管理员、PI和最终用户 成功登录仪表板后! 我还使用一个名为“内容管理”的管理区域,该区域仅可供管理员访问 但当我尝试导航到此内容管理时,它会将我重定向到登录(授权重定向循环),但用户已经登录(因为如果此内容管理显示的用户角色是Admin,我会设置If条件) 我正在使用个人身份验证和脚手架标识 ASP.NETCore3.1 我不知道如何解决这个重定向问题 在下面我放了一些剪贴代码ASP.Net内核中的授权,asp.net,sql-server,authentication,asp.net-core,authorization,Asp.net,Sql Server,Authentication,Asp.net Core,Authorization,我正在开发一个管理仪表板面板,我已经为仪表板创建了一个介绍页面,用户可以在那里登录 我有四种类型的用户:管理员、站点管理员、PI和最终用户 成功登录仪表板后! 我还使用一个名为“内容管理”的管理区域,该区域仅可供管理员访问 但当我尝试导航到此内容管理时,它会将我重定向到登录(授权重定向循环),但用户已经登录(因为如果此内容管理显示的用户角色是Admin,我会设置If条件) 我正在使用个人身份验证和脚手架标识 ASP.NETCore3.1 我不知道如何解决这个重定向问题 在下面我放了一些剪贴代码
[授权(角色=SD.SuperAdmin)]
[区域(“管理”)]
公共类HMController:控制器
{
私有只读应用程序的bContext\u上下文;
公共HMController(ApplicationDbContext上下文)
{
_上下文=上下文;
}
注:如果条件在_布局页面中,则建议使用
管理区域使用另一个布局(不是_布局)!
另外,我已经检查了Sqlserver,角色和用户已经创建并正常工作了
_布局代码:
@if (User.IsInRole(SD.SuperAdmin) || User.IsInRole(SD.ManagerUser))
{
...
@if (User.IsInRole(SD.SuperAdmin))
{
..
}
...
}
如果您在登录操作中检查已登录的用户,并按角色路由用户。 你能解决这个问题吗
if (User.Identity.IsAuthenticated)
{
if (GetUserType() == "Admin")
return Redirect("Admin/Index");
else if (GetUserType() == "Context")
return Redirect("Context/Index");
}
例如:
- 如果管理员登录系统,则如果管理员单击未授权页面,然后重定向帐户/登录
- 帐户/登录页面为“检查用户登录”
- 如果用户登录,则重定向用户主页
Authorize
属性对我来说似乎很好。您可以在\u Layout.cshtml
中添加条件的代码吗?您如何将角色设置为用户?您是否使用userManager.AddToRoleAsync(用户,角色)
?我更新我的问题,是的,我使用user manager.AddToRoleAsync(用户,角色),有线内容是用户已登录,但当尝试转到上述控制器的视图时,它会将我重定向到登录(我已使用[Authorize]进行了测试,但没有任何更改@bmartins,我必须在其中添加此内容?在登录页写入获取操作