私はASP.NET MVC 3アプリケーションを開発中で、すべてのログイン機能を処理するためにフォーム認証を使用しています。私は3つのユーザー役割 - マネージャー、クライアント、チューター - を作成し、ユーザーは役割に応じて異なるビューに誘導されます。役割をコーディングする前に、私のログインはうまくいきました。私のコントローラのコードは次のとおりです。システムに入る前にログイン資格情報を2回入力する必要があります - MVC3
public class AccountController : Controller
{
//
// GET: /Account/LogOn
public ActionResult LogOn()
{
return View();
}
[Authorize(Roles="Manager")]
public ActionResult Index()
{
return View();
}
[Authorize(Roles = "Tutors")]
public ActionResult TutorMain()
{
return View();
}
[Authorize(Roles = "Clients")]
public ActionResult ClientMain()
{
return View();
}
//
// POST: /Account/LogOn
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
if (User.IsInRole("Manager"))
return RedirectToAction("Index", "Account");
if (User.IsInRole("Tutors"))
return RedirectToAction("TutorMain", "Account");
if (User.IsInRole("Clients"))
return RedirectToAction("ClientMain", "Account");
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
なぜこれが起こっているのか理解してください。
おかげで、 エイミー