【发布时间】:2019-04-30 22:16:54
【问题描述】:
当用户登录时。我正在寻找一种方法,根据用户在身份中的角色将其路由到正确的区域。
我试过了:
- 您拥有可以重定向到该区域
return RedirectToAction("Index", "Dashboard", new { area = "Admin" });的默认控制器, 但我有多个角色。 - 在 StartUp Configure 方法中添加重写选项。一开始可以,但是如果您有指向另一个区域的链接 - 它就行不通了。
- 在默认控制器上我创建了一个视图。添加了一些剃须刀
@if (User.Identity.IsAuthenticated && User.IsInRole("Admin")) else if()。然后在 if 语句之间使用<text>和<script>标记来调用将重定向用户的函数。它没有提供错误,只是没有工作。我认为它不会,但是...尝试跳出框框思考
提前感谢您的想法!
【问题讨论】:
-
你有什么理由不只使用一些 if 语句(或 switch)来重定向到适当的区域吗?
-
@Ben 我可以,但我需要找到一种方法来获取当前用户的角色,因为
[Authorize(Roles = "Admin")]在方法中不起作用 -
^ 这将有助于解决您的问题。它还解释了为什么您在登录后直接拨打
User.IsInRole不起作用。您还可以将所有登录转发到辅助操作,然后 (a) 获取用户的角色并 (b) 使用 IF/Switch 分层钻取重定向到相关最终视图的角色。 -
@ShahzadHassan @scgough 感谢您的反馈。我在默认控制器上有一个
[Authorize],我认为它会在授权之前显示视图。
标签: c# asp.net-mvc asp.net-core asp.net-identity asp.net-mvc-areas