用户可以成功登录,但登录页面显示而不是重定向

时间:2012-12-12 15:57:34

标签: asp.net-mvc-4 authorization

我将一个项目从asp.net mvc 2移到了asp.net 4,经过一些修复后,一切似乎都有效。

除了您必须授权的应用部分外。如果没有授权,可以查看非授权页面,但只要您尝试登录,一切都会进行 香蕉。当您登录时,您将登录(您在登录部分中看到您的姓名)但未重定向并提示您再次登录,而您无法访问部分 适用于非授权用户的应用。一切都适用于localhost,但不适用于已部署的站点。

  • 起初我以为我的机器密钥和app-pool recykling存在问题,所以我添加了一个。还是同样的问题。

我知道MVC使用websecurity而不是成员资格但我已经读过会员解决方案可以存在于mvc 4项目中,我很乐意使用我的自定义membershipprovider和roleprovider并节省一些时间(如果可能的话)。

控制器:

    [HttpPost]
    public ActionResult LogOn(LogOnModel model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            if (MembershipService.ValidateUser(model.UserName, model.Password))
            {
                FormsService.SignIn(model.UserName, true);
                FormsAuthentication.SetAuthCookie(model.UserName, true);
                var role = userRepo.usersInRoles.First(x => x.userMail == model.UserName);
                if (role.roleName == "Business")
                    return RedirectToAction("Start", "Business");
                if (role.roleName == "Admin")
                    return RedirectToAction("Index", "Admin");
            }
            else
            {
                ModelState.AddModelError("", "The user name or password provided is incorrect.");
            }
        }

        return View(model);
    }

会员资格的配置设置&作用

<authentication mode="Forms">
   <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
<membership defaultProvider="AccountMembershipProvider">
  <providers>
    <clear />
    <add name="AccountMembershipProvider" type="MyApp.UI.Infrastructure.AccountMembershipProvider" applicationName="/" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="RoleMembershipProvider">
  <providers>
    <clear />
    <add name="RoleMembershipProvider" type="MyApp.UI.Infrastructure.RoleMembershipProvider" />

0 个答案:

没有答案