如何限制对 ASP.net MVC 控制器中某些操作的访问

2023-11-21

我是 ASP.net MVC 的新手,并使用它创建了我的第一个 Web 应用程序。在我的应用程序中,我使用数据库身份验证。我在控制器中创建了登录操作,该操作检查输入的用户名和密码是否存在于数据库中,如果存在,则将所需的值放入会话中,并根据用户的权限将用户重定向到页面,否则将用户重定向到登录页面。像这样

public ActionResult Login()
{
   if(uservalid)
   {
      //set session values and redirect to dashboard
   }
   else
   {
      //redirect to login
   }
}

在我的应用程序中,有一些功能只能在用户登录时才能访问。我想在用户尝试访问这些功能之前检查用户是否已登录,如果他未登录或没有权限,则重定向到登录页面或显示一些错误消息。

public ActionResult SomeAction()
{
   //Available only when user is logged-in
}

那么我如何检查用户是否登录并授予操作访问权限。我读到了有关授权属性的信息,但不知道如何使用它,因为我正在使用数据库身份验证。


如果您正在使用FormsAuthentication您不需要使用 ASP.NET 会话来跟踪当前经过身份验证的用户。

我读到了有关授权属性的内容,但不知道如何使用它 使用数据库身份验证。

假设您使用 FormsAuthentication,一旦您验证了用户的凭据,您应该设置一个表单身份验证 cookie:

public ActionResult Login()
{
   if(uservalid)
   {
      FormsAuthentication.SetAuthCookie("username", false);
      return RedirectToAction("SomeProtectedAction");
   }
   else
   {
      //redirect to login
   }
}

进而:

[Authorize]
public ActionResult SomeAction()
{
   string currentlyLoggedInUser = User.Identity.Name;
}

顺便说一句,如果您使用 Visual Studio 中的 Internet 模板创建一个新的 ASP.NET MVC 应用程序,您可能会看看 AccountController,它负责对用户进行身份验证并设置表单身份验证 cookie。当然,您可以扔掉所有实体框架垃圾,并针对您自己的数据库表实现您自己的凭据验证。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何限制对 ASP.net MVC 控制器中某些操作的访问 的相关文章

随机推荐