我需要用户登录才能查看单个控制器内的所有操作。我不需要保持他们的身份,因此他们将使用共享登录名和密码。
换句话说,我有一些用户组,他们需要访问网站上的某个区域。我想给他们所有相同的登录名和密码(比如'username'和'passw0rd')。
这个简单的身份验证应该只在该控制器内部工作,不应该以任何方式影响网站的其他部分。请记住,我们为网站的管理区域设置了auth工作模式,上面描述的用户组不应该看到管理员登录页面,因为它们需要在控制器内进行沙盒化。
实现它的最佳方法是什么?也许我在想错误的方向并且有一些不同的解决方案?
答案 0 :(得分:1)
当您在应用中使用表单auth时,只需为所有新用户创建另一个用户帐户,并创建两个角色,即 Admin 和 Shared Users 。
现在向控制器添加Authorize
属性:
[Authorize(Roles="Shared Users")
如果还没有,请将 Admin 角色添加到您的管理区域:
[Authorize(Roles="Admin")
答案 1 :(得分: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
属性标记需要授权其操作的控制器。