在使用MVC的C#中,我想编写一个公共实用程序或类,如果特定的conditoin失败需要重定向到登录页面。
例如:当用户登录网站时,userid将被添加到会话中。要访问“ManageUsers”页面,用户应以admin身份登录,否则我需要重定向到Login页面。我还需要在其他一些类似的页面中检查这种情况。我不想在登录时检查用户是管理员还是普通用户。我需要在普通班上检查一下。
任何建议?
答案 0 :(得分:1)
这已经存在于具有授权属性的ASP.NET MVC中:
[Authorize(Roles="Administrators")]
public AcitonResult ManageUsers() {
return View();
}
或
[Authorize(Users="Admin,SomeUser")]
public AcitonResult ManageUsers() {
return View();
}
答案 1 :(得分:1)
[Authorize(Roles = "Admin")]
public ActionResult ManageUsersController()
{
...
}
在你的web.config检查中:
...
<forms loginUrl="~/your_login_page" defaultUrl="~/">
...
此外,您应该在web.config中设置MembershipProvider和RoleProvider
答案 2 :(得分:1)
实际上我认为这对于应用程序来说并不是特别好的行为。我认为您应该禁用(或隐藏)用户无法执行的任何操作。在用户手动输入URL或使用具有该权限的书签的情况下,显示错误消息而不是重定向到登录页面。
想象一下,您是登录应用程序的用户。您单击用户界面元素,看起来您已经注销。你无法知道你不应该使用它。禁用/隐藏元素可防止大多数用户出现此情况。重定向到错误会向用户提供有价值的反馈,告知用户为何所采取的操作不会产生预期效果。
我使用从AuthorizeAttribute派生的自定义属性来实现此效果。如果用户未登录,则会重定向到登录页面。如果他们已登录但没有足够的权限,则会显示合适的错误视图。