2012-03-18 39 views
5

Trong ASP.NET Web Application của tôi, cơ cấu dự án được thể hiện bằng hình ảnh sau:Redirect Sau khi đăng nhập: Web.config

enter image description here

Các Web.config của trang web có hình thức xác thực:

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

Và Web.config của thư mục trang có:

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

Tôi có Quản trị viên người dùng với Quản trị viên vai trò. Sau khi đăng nhập thành công Tôi đang cố gắng chuyển hướng người dùng trong Home.aspx nằm trong thư mục Pages dưới dạng:

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"); 
    } 
} 

Nhưng nó không hoạt động. Nó lại chuyển hướng đến trang Đăng nhập, tức là Login.aspx với URL: localhost:3695/Login.aspx?ReturnUrl=%2fPages%2fHome.aspx.

Tôi làm cách nào để đạt được điều này? Mọi thông tin sẽ rất hữu ích.

Trân trọng.

Trả lời

8

Membership.ValidateUser chỉ xác thực tên người dùng và mật khẩu đối với nhà cung cấp thành viên. Nó không phát ra cookie xác thực.

Nếu bạn muốn làm điều này bạn cần phải sử dụng phương pháp SetAuthCookie trước khi chuyển hướng:

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

hoặc nếu trong web.config của bạn, bạn thiết lập:

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

bạn cũng có thể sử dụng RedirectFromLoginPage phương pháp sẽ phát ra cookie xác thực và chuyển hướng bạn đến trang mặc định:

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

Cảm ơn rất nhiều ... –

Các vấn đề liên quan