1

プロジェクトをasp.net mvc 2からasp.net 4に移動しましたが、少し修正した後、すべてが機能しているように見えました。

承認が必要なアプリの部分を除きます。認証なしで非認証ページを表示することは可能ですが、ログインしようとするとすぐにすべてがうまくいきません。ログインすると、ログインされますが (ログイン部分に自分の名前が表示されます)、リダイレクトされず、再度ログインするように求められ、承認されていないユーザー用のアプリの部分に到達できません。すべてがローカルホストで機能しますが、デプロイされたサイトでは機能しません。

  • 最初は、マシンキーとアプリプールのリサイクルに問題があると思ったので、1 つ追加しました。それでも同じ問題。

MVC がメンバーシップの代わりに websecurity を使用していることは知っていますが、mvc 4 プロジェクトにメンバーシップ ソリューションが存在する可能性があることを読みました。可能であれば、カスタム メンバーシップ プロバイダーとロール プロバイダーを使用して時間を節約できれば幸いです。

コントローラ:

    [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" />
4

0 に答える 0