我正在开发ASP.Net MVC应用程序。我有一个管理员登录表单。管理员登录后,会重定向到主页。
现在,当我点击Employee
菜单时,它会重定向到Employee/Index
。在Index
方法中,我正在检查管理员是否已登录。我必须检查Employee
控制器的每个方法以进行管理员登录。
有没有办法检查所有管理区域的管理员登录信息。这里管理员可以创建,更新,删除员工,商店等。那么有没有办法只检查一次adminlogin而不是索引,创建,删除,编辑的所有方法?
像
这样的东西// Controller of EmployeeController
public EmployeeController()
{
if (Session["Admin"] == null)
{
// return to AdminLogin
}
}
因为当我在浏览器中输入url
- localhost:9999/Admin/Employee/Create
时,会将其重定向到“创建”页面,而无需登录。我不想检查控制器的所有方法。
答案 0 :(得分:1)
您需要在所需的操作方法或控制器类上应用自动调整属性,并检查管理员角色,如下所示:
[Authorize(Roles = "Admin")]
在asp.net mvc and check for if a user is logged in中有关于该问题的详细讨论。
答案 1 :(得分:0)
为避免拼写错误,尤其是在使用Authorize
的情况下,我会建议为Roles
public static class Roles
{
public const string Admin = "Admin";
}
然后在装饰时你可以这样做;
[Authorize(Roles = Roles.Admin)]
因为您不希望每次都重新输入"Admin"
,这可能会在您输入拼写错误时导致代码中出现错误。