我正在开发我的第一个ASP.Net MVC 4应用程序,现在只停留在一个简单的用例中。
我需要对单个用户(管理员)进行身份验证,以便他/她可以登录管理区域来执行某些任务。虽然ASP.Net互联网项目模板具有使用简单成员资格的帐户控制器,但似乎比我实际需要的更多。例如,我真的不需要用户注册功能和用户角色。我的要求相当简单,只是将一个用户存储在数据库中,给他选项来更新他的信息,如密码,电子邮件等,并授予他访问管理区域(管理员控制器和操作)的权限。 我无法弄清楚的是
[Authorize]
来保护管理员操作答案 0 :(得分:1)
您可以构建自定义方法来获取用户及其存储的角色,然后在控制器中对其进行评估。所以,例如:
public ActionResult GetAdminPage()
{
var loggedInUserName = HttpContext.User.Identity.Name;
var user = somesortofproviderlookupmethod(loggedInUserName);
// Assume user is a bool and is true
if (user)
{
return view("AdminPage");
}
}
我唯一不确定的是HttpContext.User是否需要会员资格。也许有人可以说清楚。如果是这样,也许您可以从视图中发送用户名,但当然您信任客户端。那么你如何进行用户身份验证会稍微改变这个答案。
就个人而言,我喜欢会员资格。它干净,简单,快速,如果你最终有额外的要求,可以很好地扩展。使用成员资格做这样的事情会更容易,因为那时你实际上可以使用Roles.GetRolesForUser();如果它们包含您要查找的角色,则仅返回管理视图。