Asp.net MVC4,如何在不使用任何提供程序的情况下使用角色
我想在asp.net MVC4项目中使用没有任何提供程序的角色 我在没有提供商的情况下成功登录和注销 但是对于这个角色,我不知道如何设置它 这是AccountController.cs中我的部分Asp.net MVC4,如何在不使用任何提供程序的情况下使用角色,asp.net,asp.net-mvc-4,Asp.net,Asp.net Mvc 4,我想在asp.net MVC4项目中使用没有任何提供程序的角色 我在没有提供商的情况下成功登录和注销 但是对于这个角色,我不知道如何设置它 这是AccountController.cs中我的部分 [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResult Login(LoginModel model, string returnUrl) { if (ModelState.IsValid &&
[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;
}
}
//设置角色部分不工作,错误消息显示
未找到名为“root”的用户。
描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源。
异常详细信息:System.InvalidOperationException:未找到名为“root”的用户。
Web.config
<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" />
如何为用户定义角色?在调用
角色时使用操作过滤器?。
您基本上是在调用web.config中注册的基础角色提供程序。如果您不想使用默认角色提供程序(与SQL server一起使用),您可以随时使用
您只需编写该类的自定义实现,或至少编写您打算使用的方法:
public class MyRoleProvider: RoleProvider
{
... your implementation comes here
}
然后在web.config中注册自定义角色提供程序以替换默认角色提供程序:
<roleManager defaultProvider="DefaultRoleProvider">
<providers>
<add name="DefaultRoleProvider" type="MyNamespace.MyRoleProvider, MyAssembly" />
</providers>
</roleManager>
当您调用
角色时。*
您基本上是在web.config中注册的基础角色提供程序。如果您不想使用默认角色提供程序(与SQL server一起使用),您可以随时使用
您只需编写该类的自定义实现,或至少编写您打算使用的方法:
public class MyRoleProvider: RoleProvider
{
... your implementation comes here
}
然后在web.config中注册自定义角色提供程序以替换默认角色提供程序:
<roleManager defaultProvider="DefaultRoleProvider">
<providers>
<add name="DefaultRoleProvider" type="MyNamespace.MyRoleProvider, MyAssembly" />
</providers>
</roleManager>
如果没有提供者,您希望如何使用角色?这是不可能的吗?无法简单地将角色“Administrator”设置为“root”用户??我使用的是Mysql,我找到了Mysql成员资格提供程序,但我不想遵循用户表结构。所以我只想为我的项目创建非常简单的登录/退出和角色功能..如果不在Web.config中定义RoleProvider,就不能使用角色,同样,如果没有成员资格提供程序,则无法使用成员资格。在web.config中定义RoleProvider需要多少成本?如果没有提供程序,您希望如何使用角色?这是不可能的吗?无法简单地将角色“Administrator”设置为“root”用户??我使用的是Mysql,我找到了Mysql成员资格提供程序,但我不想遵循用户表结构。因此,我只想为我的项目创建非常简单的登录/退出和角色功能。如果不在Web.config中定义RoleProvider,您就不能使用角色,就像没有MembershipProvider,您就不能使用成员资格一样。在Web.config中定义RoleProvider需要多少成本?