Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.Net内核中的授权_Asp.net_Sql Server_Authentication_Asp.net Core_Authorization - Fatal编程技术网

ASP.Net内核中的授权

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 我不知道如何解决这个重定向问题 在下面我放了一些剪贴代码

我正在开发一个管理仪表板面板,我已经为仪表板创建了一个介绍页面,用户可以在那里登录 我有四种类型的用户:管理员、站点管理员、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,我必须在其中添加此内容?在登录页写入获取操作