0

我需要要求用户登录才能查看单个控制器内的所有操作。我不需要维护他们的身份,所以他们将使用共享的登录名和密码。

换句话说,我有一些用户组,他们需要访问网站上的某个区域。我想给他们所有相同的登录名和密码(比如,'用户名'和'passw0rd')。

这个简单的身份验证应该只在该控制器内工作,并且不应该以任何方式影响网站的其他部分。请记住,我们的表单身份验证适用于网站的管理区域,并且上述用户组不应看到管理员登录页面,因为他们需要在其控制器内进行沙盒处理。

实现它的最佳方法是什么?也许我在想一个错误的方向并且有一些不同的解决方案?

4

2 回答 2

1

您可以将凭据存储在 web.config 文件中。请注意,您也可以将凭据加密存储在 web.config 中。

<authentication mode="Forms">
  <forms timeout="30" loginUrl="~/Admin/Login">
    <credentials passwordFormat="Clear">
      <user name="user" password="password"/>
    </credentials>
  </forms>
</authentication>

您可以使用该FormsAuthentication.Authenticate方法对用户进行身份验证。

例如。

[HttpPost]
public ActionResult Login(string name, string password, string returnUrl)
{
   if (FormsAuthentication.Authenticate(name, password))
   {
       FormsAuthentication.SetAuthCookie(name, false);
       return Redirect(!string.IsNullOrEmpty(returnUrl) ? returnUrl : Url.Action("Manage", "Admin"));
   }
   else
       return View();
}

您可以使用内置Authorize属性标记其操作需要授权的控制器。

于 2012-11-29T14:51:27.560 回答
1

当您在应用程序中使用表单身份验证时,只需为所有新用户创建另一个用户帐户并创建两个角色,即AdminShared Users

现在Authorize向您的控制器添加一个属性:

[Authorize(Roles="Shared Users")

如果还没有,请将角色Admin添加到您的管理区域:

[Authorize(Roles="Admin")
于 2012-11-29T13:37:18.810 回答