0

こんにちは、ログイン ページに問題があります。
シナリオは、
たとえば、www.mydomain.com/admin/ にアクセスすると、このような ReturnURL パラメーターを使用してログイン ページにリダイレクトされます。www.mydomain.com/login.aspx?ReturnURL=%2fAdmin%2f.
管理者アカウントでログインしていますが、すべて正常に動作しています。
しかし、直接 Login.aspx にアクセスすると、ReturnURL QueryString フィールドがありません。
同じ管理者アカウントでログインしますが、ログイン後に www.mydomain.com/admin/ にアクセスしようとすると、ログイン ページにリダイレクトされます。

こんなナビをやっています。私は何が欠けていますか?

//The code block that is logging in admin.
//check if there is a ReturnURL
if (QueryStringTool.IsExistAndNotNull("ReturnURL"))
{
    Session["UserType"] = UserTypes.UserType.Admin;
    Response.Redirect(FormsAuthentication.GetRedirectUrl(txtUserName.Text.Trim(), false));
}
//ReturnURL doesn't exists.
else
{
    FormsAuthentication.SetAuthCookie(txtUserName.Text, cbUserRememberMe.Checked);
    Response.Redirect("/Admin/Default.aspx");
}
4

2 に答える 2

1

これはサンプルの web.config です

<configuration>
   <system.web>
   <authentication mode="Forms">
      <forms 
      name="401kApp" 
      loginUrl="/login.aspx"
      cookieless="AutoDetect"
      defaultUrl="myCustomLogin.aspx">
      <credentials passwordFormat = "SHA1">   
         <user name="UserName" 
         password="07B7F3EE06F278DB966BE960E7CBBD103DF30CA6"/>
      </credentials>   
      </forms>
   </authentication>
   </system.web>
</configuration><br/>

ORで設定defaultUrl="yourdefaultpageURL"すると、FormsAuthentication.RedirectFromLoginPage Method (String, Boolean) を使用できますweb.config

于 2011-05-15T09:25:42.660 に答える
1

これを試してみてください。コードを置き換える

//check if there is a ReturnURL

    if (QueryStringTool.IsExistAndNotNull("ReturnURL"))
    {
        Session["UserType"] = UserTypes.UserType.Admin;
        Response.Redirect(FormsAuthentication.GetRedirectUrl(txtUserName.Text.Trim(), false));
    }
    //ReturnURL doesn't exists.
    else
    {
        FormsAuthentication.SetAuthCookie(txtUserName.Text, cbUserRememberMe.Checked);
        Response.Redirect("/Admin/Default.aspx");
    }

これで

if("Check if User Is Authentic")
{
Session["UserType"] = UserTypes.UserType.Admin;
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, cbUserRememberMe.Checked);
}

これは、コード全体で機能します。認証されたユーザーを最初に要求された URL またはデフォルトの URL にリダイレクトします。ユーザーが管理ページにリダイレクトされている場合は、ページイベント
を確認してくださいDefaultLoadSession["UserType"]Admin

于 2011-05-15T11:01:06.857 に答える