使用会话在 MVC 应用程序中维护登录的用户数据是否足够有效
本文关键字:数据 用户数 用户 是否 有效 登录 会话 MVC 应用程序 维护 | 更新日期: 2023-09-27 18:36:25
我正在开发 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";
}
}
喜欢这个。。然后在每个页面中,我将检查此角色,并在此基础上向用户隐藏/显示一些功能
这是这样做的正确方法吗?如果没有,还有什么替代方法可以做到这一点。
请建议..
您应该使用 HttpContext.User.Identity 来获取当前用户。您可以获取用户名和用户角色:
var uName = HttpContext.User.Identity.Name;
var isAdmin = HttpContext.User.IsInRole("Admin");
与任何缓存方法一样,它有积极的一面和消极的一面。您的电话,如果你对解决方案没问题。下面是一些优点/缺点。
优点:
- 减少对数据库的请求
- 更快的页面(同样,您只需要加载会话状态)
缺点:
- 缓存失效是一个复杂的问题:即您可能不知道特定用户是否不再是管理员
- 由于站点中的错误而导致的会话泄漏允许特权提升(只需要具有会话 ID,不需要管理员凭据)。