全局检查管理员登录

时间:2016-04-27 07:18:46

标签: asp.net-mvc

我正在开发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时,会将其重定向到“创建”页面,而无需登录。我不想检查控制器的所有方法。

2 个答案:

答案 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",这可能会在您输入拼写错误时导致代码中出现错误。