【发布时间】:2020-06-10 04:08:14
【问题描述】:
我正在开发一个管理仪表板面板,我为仪表板创建了一个介绍页面,用户可以在那里登录 我有四种类型的用户,Admin、SiteManager、PI 和 EndUser 成功登录仪表板后! 我还将管理区域用于名为“内容管理”的东西,只有管理员可以访问 但是当我尝试导航到此内容管理时,它会将我重定向到登录名(授权重定向循环),但用户已经登录(因为如果用户角色是管理员,则我设置了 If 条件,此内容管理显示)
我正在使用个人身份验证和脚手架身份 ASP .Net 核心 3.1 我不知道如何解决这个重定向问题!
在下面我放了一些代码
[Authorize(Roles =SD.SuperAdmin)]
[Area("Admin")]
public class HMController : Controller
{
private readonly ApplicationDbContext _context;
public HMController(ApplicationDbContext context)
{
_context = context;
}
注意:如果条件在_layout页面中建议 并且管理区域使用另一种布局(不是_layout)! 另外,我已经检查了 Sqlserver 的角色和用户是否已创建并正常运行!
_layout 代码:
@if (User.IsInRole(SD.SuperAdmin) || User.IsInRole(SD.ManagerUser))
{
...
@if (User.IsInRole(SD.SuperAdmin))
{
..
}
...
}
【问题讨论】:
-
Authorize属性对我来说似乎很好。您能否在_Layout.cshtml中添加条件代码?以及如何将角色设置为用户?你用userManager.AddToRoleAsync(user, role)吗? -
我更新了我的问题,是的,我使用了用户 manager.AddToRoleAsync(user, role),有线的事情是用户已经登录但是什么时候尝试去查看它重定向的上述控制器的视图我登录(我已经用 [Authorize] 进行了测试,但没有任何改变@bmartins
标签: asp.net sql-server authentication asp.net-core authorization