我想在 asp.net MVC4 项目中使用没有任何提供者的角色。
我在没有提供者的情况下成功登录和注销。
但是对于角色,我不知道如何设置它。
这是我的 AccountController.cs 的一部分
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid && myLogin(model.UserName, model.Password, persistCookie: model.RememberMe))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
//set Roles, how can I set role to users?
if (HttpContext.User != null)
{
if (!Roles.RoleExists("Administrator"))
{
Roles.CreateRole("Administrator");
}
Roles.AddUserToRole(model.UserName, "Administrator");
//string[] roles = { "Moderator", "Administrator" };
//HttpContext.User = new GenericPrincipal(HttpContext.User.Identity, roles);
}
return RedirectToLocal(returnUrl);
}
// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
}
private bool myLogin(string userName, string password, bool persistCookie)
{
if (userName == "root" && password == "root")
{
return true;
}
else
{
return false;
}
}
//set Roles 部分不起作用,错误消息说,
未找到名为“root”的用户。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。异常详细信息:System.InvalidOperationException:未找到名为“root”的用户。
网页配置
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<roleManager enabled="true" />
我想使用角色检查来控制访问此页面,
[Authorize(Roles="Administrator")]
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
如何为用户定义角色?在操作上使用过滤器?