1

我正在开发 ASP.net MVC Web 应用程序。在这里,我正在实施 Windows 身份验证。我已经在文件中进行了必要的配置web.config以使其工作

通过使用 Windows 身份验证,我能够获得登录的用户名。通过将其用作参数,我正在查询数据库以获取登录用户的角色。

在我的应用程序中,我有两个角色。管理员和普通用户。我需要根据登录用户的角色显示一些页面内容。

我可以在 MVC 中使用会话在每个页面中携带此信息并显示内容吗

例如:在 Global.asax

               protected void Session_Start(object sender, EventArgs e)
            {

                 Query database....

                if( role="Admin")

                {

              Session["UserType"]="Adimn";
               }                      
             else
            {
            Session["UserType"]="NormalUser";
            }
         }

像这样.. 然后在每个页面中,我将检查这个角色,并基于此我将隐藏/向用户显示一些功能

这是正确的方法吗?如果没有,有什么替代方法。

请建议..

4

2 回答 2

1

您应该使用 HttpContext.User.Identity 来获取当前用户。您可以获取用户名和用户角色:

var uName = HttpContext.User.Identity.Name;
var isAdmin = HttpContext.User.IsInRole("Admin");
于 2013-10-22T07:15:52.307 回答
1

与任何缓存方法一样,它有积极和消极的一面。如果您对解决方案满意,请致电。下面的一些优点/缺点。

优点:

  • 对数据库的请求更少
  • 更快的页面(同样你只需要加载会话状态)

缺点:

  • 缓存失效是一个复杂的问题:即您可能不知道特定用户是否不再是管理员
  • 由于您的站点中的错误而泄漏会话允许提升权限(只需要具有会话 ID,不需要管理员凭据)。
于 2013-10-22T07:16:32.593 回答