2012-04-10 15 views
0

net mvc 3 application。.net mvc formログインURLリダイレクト

私はログインフォームに問題があります。

adminユーザーとログオンしようとすると、最初に問題ログはありませんが、他の問題でログインしようとすると、2番目のログインページからログインする必要があります。

最初のフォームウルはこれです:私のDB管理ユーザー以外の他の用途に

http://HOST.com/Login/Login

私は1つの時間を試してみて、このURLを取得

http://HOST.com/Login/Login?ReturnUrl=%2f

リダイレクトし、もう一度やり直すと、正しくログインします。毎回起こります。

これは

<authentication mode="Forms"> 
    <forms loginUrl="Login/Login" timeout="200000" slidingExpiration="true"> 
    </forms> 
</authentication> 

    <authorization> 
     <deny users="?" /> 
    </authorization> 

は、任意の提案

ログインフォームファイルをありがとう、私のweb.configファイルでフォームのセクションのための私のフォームコードです:あなたのweb.configファイルを変更してください

using System; 
using System.Web.Mvc; 
using System.Web.Security; 
using SAMPLE.Models; 
using SAMPLE.Helpers; 
using System.Web; 
using System.Linq; 
namespace SAMPLE.Controllers 
{ 
    public class LoginController : Controller 
    { 
     public ActionResult Login(string username, string password, string returnUrl) 
     { 
      if (!String.IsNullOrEmpty(username) && !String.IsNullOrEmpty(password)) 
      { 
       if (UserAccount.IsValid(username, password)) 
        RedirectFromLoginPage(username, returnUrl); 
       else 
        ViewData["LoginMessage"] = "Incorrect username or password."; 
      } 

      return View(); 
     } 

     public ActionResult Logout() 
     { 
      FormsAuthentication.SignOut(); 
      return RedirectToAction("Login", "Login"); 
     } 
     private void RedirectFromLoginPage(string username, string returnUrl) 
     { 
      FormsAuthentication.SetAuthCookie(username, false); 

      var userType = 0; 
      var user = UserAccount.SingleOrDefault(x => x.Username == username.ToLower()); 
      if(user!=null) 
      userType = user.UserType;    

      if (userType == 2) 
      { 
       Response.Redirect("/Usrmgmt"); 
      } 
      else 
      { 
       var privileges = SAMPLE.Helpers.SAMPLEContext.Privileges; 

       if ((privileges & PrivilegeConstants.Home) == PrivilegeConstants.Home) 
        Response.Redirect("/"); 
       else if ((privileges & PrivilegeConstants.Budgets) == PrivilegeConstants.Budgets) 
        Response.Redirect("/Budget"); 

       else if ((privileges & PrivilegeConstants.Estimates) == PrivilegeConstants.Estimates) 
        Response.Redirect("/Estimate"); 

       else if ((privileges & PrivilegeConstants.EstimageCatalogue) == PrivilegeConstants.EstimageCatalogue) 
        Response.Redirect("/Labour"); 

       else if ((privileges & PrivilegeConstants.CRM) == PrivilegeConstants.CRM) 
        Response.Redirect("/CRM"); 

       else if ((privileges & PrivilegeConstants.JobStatus) == PrivilegeConstants.JobStatus) 
        Response.Redirect("/JobStatus"); 

       else if ((privileges & PrivilegeConstants.UserManage) == PrivilegeConstants.UserManage) 
        Response.Redirect("/Administration"); 

       else 
        Response.Redirect("/"); 
      } 
      //} 
     } 
    } 
} 
+0

これは、それが動作する方法である:私は、ユーザーが持っていると私はそれが/ ursmgmtページに私を取る使用渡します。このページは私のスーパー管理ページです。私はここに企業を作ります。私は新しい会社を創設するときにその会社の管理者を作成します。会社はそのログイン情報を使用してアプリケーションにログインし、「ユーザー管理ページ」に余分なユーザーを設定することができます。 – GTITC

+0

スーパー管理者として作成したユーザーと、会社で作成した他のユーザーにはユーザータイプ= 0があります。私が作成した最初のユーザー/会社の管理者には特権がありません。特権は、ユーザ管理ページの会社管理者によって設定されます。 1)私はユーザー "admin"のパスワードでログインします: "admin"これは私をスーパー管理会社の作成ページ – GTITC

+0

に連れて行きます2)私はA1Companyと呼ばれる新しい会社を作り、 A1CompanyAdminとしてその会社の管理者ユーザー。 3)A1CompanyAdminはアプリケーションにログインし、ユーザー管理ページに移動して新しいユーザー "A1CompanySalesUser"を作成し、権限を与えます(ユーザーがアクセスできる5ページのうちどのページにアクセスするかをチェックして、1つまたはすべてのページをクリックします)。 A1CompanySalesUserとA1CompanyAdminの両方ともユーザータイプ= 0を持っていますか?ユーザータイプまたは特権に問題がある可能性がありますか? – GTITC

答えて

1

〜へ:

<authentication mode="Forms"> 
    <forms loginUrl="~/Login/Login" timeout="2880" protection="All"/> 
</authentication> 

は、以下のコードを削除して再試行してください:

<authorization> 
    <deny users="?" /> 
</authorization> 
+0

保護との相違点=すべてとスライドの有効期限は何ですか?私が今日まで学んだことからsessionatimeout行がない場合、デフォルトは30分ですが、それでもこの30分前にログアウトしていました。 – GTITC

+0

保護=すべてのページがフォーム認証によって保護されていることを意味します。スライドの有効期限が有効な認証Cookieの有効期限をリセットしますタイムアウト間隔の半分以上が経過しています。 –

+0

提案したようにweb.configで自分のコードを置き換えました。それでも同じ問題があります。いくつかの背景:私が使用しているアプリケーションは複数のユーザー用に設定されており、各ユーザー/会社はユーザーを追加でき、余分なユーザーは各社に接続しています。現時点では、dbの管理者として設定されている2人のユーザーがいます。これらの直接ユーザーのいずれかでログインしようとすると、最初の試行でアプリケーションにアクセスできます。私は問題が "企業"の1つによって作成されたユーザーである – GTITC

関連する問題