如何在ASP.NET中仅为admin提供按钮?

时间:2015-08-04 18:12:35

标签: asp.net view identity

所以我有一个视图,例如电影列表(在表格中)。

所以现在我希望每个位置都有一个像删除编辑这样的按钮,但只有在登录管理员帐户时才可见。

  • 我应该制作2个控制器和2个视图(一个用于管理员,一个用于普通用户)?

  • 有没有办法与一些隐藏的选项共享相同的视图,例如编辑和删除用户?

  • 有没有比IsUserInRole("Administrator")

  • 更好的方法

1 个答案:

答案 0 :(得分:0)

  

我应该制作2个控制器和2个视图(一个用于管理员,一个用于普通用户)?

您可以使用1个控制器和1个视图,或1个控制器和2个视图,或2个控制器和2个视图。这取决于您从每个选项中重复使用的代码量,以及您计划的可扩展性类型。如果管理员获得了许多其他功能,并且/或者它要求页面布局不同,您可能希望使用2个视图和1个控制器。

  

有没有办法与一些隐藏的选项共享相同的视图,例如编辑和删除用户?

是。只需将条件控件括在if语句中(例如if (IsUserInRole("Administrator") {@Html.ControlFor(m => m.Something)}。根据页面的布局,可能更容易将整个DIV括起来而不是通过控件进行工作控制。

除了使用角色来限制呈现的控件之外,还必须限制可以调用的操作(即将代码添加到检查角色的操作处理程序)。否则,恶意用户可以欺骗与隐藏控件关联的HTTP流量,并做一些他本不应该做的事情。

  

有没有比IsUserInRole(“管理员”)

更好的方法

不,不是真的。您可以编写一些扩展方法或其他调用IsUserInRole的函数,但在代码中的某个位置,您必须在某个时刻调用它。