在进入系统之前必须输入两次登录凭据 - MVC3
Posted
技术标签:
【中文标题】在进入系统之前必须输入两次登录凭据 - MVC3【英文标题】:Have to type login credentials twice before entering system - MVC3 【发布时间】:2011-07-23 08:58:57 【问题描述】:我正在开发一个 ASP.NET MVC 3 应用程序,并且我正在使用表单身份验证来处理所有登录功能。我创建了 3 个用户角色 - 经理、客户和导师,用户将根据他们的角色被引导到不同的视图。在我对角色进行编码之前,我的登录工作正常。这是来自我的控制器的代码:
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);
请帮我弄清楚为什么会这样。
谢谢, 艾米
【问题讨论】:
【参考方案1】:确保您的登录名是所有相关角色的成员......即,如果您只是“经理”的成员,那么如果您尝试查看需要“导师”的 TutorMain(),则会再次提示您" 角色。
您可以像这样为每个控制器指定多个角色:
[Authorize(Roles="Manager")]
public ActionResult Index()
...
[Authorize(Roles = "Manager, Tutors")]
public ActionResult TutorMain()
return View();
如果这变得麻烦,则调查“自定义”授权属性 - 如 asp.net mvc Adding to the AUTHORIZE attribute 中所述
【讨论】:
以上是关于在进入系统之前必须输入两次登录凭据 - MVC3的主要内容,如果未能解决你的问题,请参考以下文章
广告接入Android 应用接入有米广告积分墙 ( 注册有米云账号 | 首次登录设置开发者信息 | 添加应用 )
广告接入Android 应用接入有米广告积分墙 ( 注册有米云账号 | 首次登录设置开发者信息 | 添加应用 )