2012-03-18 98 views
5

は私のASP.NET Webアプリケーションでは、プロジェクトの構造は、以下の画像で示されている:リダイレクト後ログイン:Web.configファイル

enter image description here

サイトのWeb.configファイルには、フォーム認証を持っています

<authentication mode="Forms"> 
    <forms loginUrl="~/Login.aspx" timeout="2880" />  
</authentication> 

とページフォルダのWeb.configファイルがあります:

<?xml version="1.0"?> 
<configuration> 
<system.web> 
    <authorization> 
    <allow roles="Admin"/> 
    <deny users="*"/> 
    </authorization> 
</system.web> 

私はUser adminという管理者を持っています。ログインに成功した後、Home.aspxのユーザーをPagesフォルダにリダイレクトしようとしています。

protected void EMSLogin_Authenticate(object sender, AuthenticateEventArgs e) { 
    TextBox UserNameTextBox = EMSLogin.FindControl("UserName") as TextBox; 
    TextBox PasswordTextBox = EMSLogin.FindControl("Password") as TextBox; 

    if (Membership.ValidateUser(UserNameTextBox.Text, PasswordTextBox.Text)) { 
    Response.Redirect("~/Pages/Home.aspx"); 
    } 
} 

しかし、動作しません。再度、ログインページ(URL:localhost:3695/Login.aspx?ReturnUrl=%2fPages%2fHome.aspx)のLogin.aspxにリダイレクトされます。

どうすればこの問題を解決できますか?どんな情報も非常に役立ちます。

よろしくお願いいたします。

答えて

8

Membership.ValidateUserは、メンバーシップ・プロバイダに対してユーザー名とパスワードの検証のみを行います。認証Cookieは発行されません。

あなたがリダイレクトする前にSetAuthCookieメソッドを使用する必要がこれを行うにしたい場合は:あなたのweb.configファイル内

if (Membership.ValidateUser(UserNameTextBox.Text, PasswordTextBox.Text)) 
{ 
    FormsAuthentication.SetAuthCookie(UserNameTextBox.Text, false); 
    Response.Redirect("~/Pages/Home.aspx"); 
} 

かどうかを設定します。

<authentication mode="Forms"> 
    <forms loginUrl="~/Login.aspx" defaultUrl="~/Pages/Home.aspx" timeout="2880" /> 
</authentication> 

をあなたもRedirectFromLoginPageを使用することができますメソッドを使用して認証Cookieを発行し、デフォルトのページにリダイレクトします。

if (Membership.ValidateUser(UserNameTextBox.Text, PasswordTextBox.Text)) 
{ 
    FormsAuthentication.RedirectFromLoginPage(UserNameTextBox.Text, false); 
} 
+0

ありがとうございました... –

関連する問題