Я в первый раз использую членство и роль поставщика для моей страницы входа. Мое членство работало нормально, но я не мог использовать роль поставщика на моей странице входа. У меня есть один контроллер с именем MyAccount controller. Этот контроллер проверяет членство пользователя и после проверки перенаправляет его на Домашний контроллер на основе роли пользователя. Вот контроллерКак использовать службу роли в MVC 5?
MyAccount:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(Login l, string returnUrl = "")
{if (ModelState.IsValid)
{
var isValidUser = Membership.ValidateUser(l.UserName, l.Password);
if (isValidUser)
{
FormsAuthentication.SetAuthCookie(l.UserName, l.RememberMe);
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
else If(*"USER ROLE AS ADMIN"*)
{
RedirectToAction("AdminIndex","Home");
}
else
{
RedirectToAction("ClientIndex","Home");
}
}
}
ViewBag.ErrorMassage = "Wrong Id or Password";
ModelState.Remove("Password");
return View();
}
И
Главная Контроллер:
[Authorize (Roles= "Admin")]
public ActionResult AdminIndex()
{
return View();
}
[Authorize (Roles = "Client")]
public ActionResult ClientIndex()
{
return View();
}
I A m not sure Где я должен проверить роль пользователя, в MyAccount Controller или In Home Controller?
RoleProvider:
public override string[] GetRolesForUser(string username)
{
if (!HttpContext.Current.User.Identity.IsAuthenticated)
{
return null;
}
//check cache
var cacheKey = string.Format("{0}_role", username);
if (HttpRuntime.Cache[cacheKey] != null)
{
return (string[])HttpRuntime.Cache[cacheKey];
}
string[] roles = new string[] { };
roles = gateway.GetUserRole(username);
{
if (roles.Any())
{
HttpRuntime.Cache.Insert(cacheKey, roles, null, DateTime.Now.AddMinutes(_cacheTimeoutInMinute), Cache.NoSlidingExpiration);
}
}
return roles;
}
public override bool IsUserInRole(string username, string roleName)
{
var userRoles = GetRolesForUser(username);
return userRoles.Contains(roleName);
}
Как я могу использовать этот RoleProvider в мой контроллер и перенаправлять его администратором или клиент действий?