我们使用MVC 3.默认用户管理不适用于我们,因为我们的帐户信息存储在我们自己的数据存储中,访问通过我们自己的存储库类进行 .
我正在尝试将主要添加角色分配给HttpContext.User并发出授权cookie .
基于代码剪切我发现我尝试过这样的事情:
if (UserIsOk(name, password))
{
HttpContext.User =
new GenericPrincipal(
new GenericIdentity(name, "Forms"),
new string[] { "Admin" }
);
FormsAuthentication.SetAuthCookie(name, false);
return Redirect(returnUrl);
}
完成下一个请求后,将对用户进行身份验证,但他不处于“管理员”角色 . 我错过了什么?
2 回答
我认为你应该实施 FormsAuthenticationTicket . 更多信息:http://msdn.microsoft.com/en-us/library/aa289844(v=vs.71).aspx
在Mvc中,它非常相似 .
我有一个名为UserSession的类,它被注入到LoginController中,我在LogOn操作中使用:
这是我的UserSession LogIn实现(注意我将“Admin”角色硬编码为示例,但您可以将其作为参数传递):
然后在基本控制器中我重写OnAuthorization方法来获取cookie:
我希望这有帮助 . 让我知道 .
您确定,这些角色已启用,并且有这样的角色吗?
如果没有,请执行以下操作:在Visual Studio中:项目 - > ASP.NET配置
然后选择安全性,启用角色 . 创建角色“管理员” .
然后尝试你的方法