2009-05-13 27 views
5

Tôi có trang đăng nhập sử dụng tư cách thành viên ASP.NET. Khi tôi đã xác thực người dùng, tôi cần lưu trữ một số chi tiết về chúng trong các biến Session. Vấn đề làUser.Identity.IsAuthenticated false cho đến khi được chuyển hướng từ trang đăng nhập

Membership.GetUser() == null and 
User.Identity.IsAuthenticated == false 

cho đến khi tôi đã điều hướng khỏi trang.

Tôi đã cố gắng sử dụng

FormsAuthentication.Authenticate(tbUsername.Text, tbPassword.Text); 

Và kiểm tra User.Identity.IsAuthenticated nhưng nó trả về false cho đến khi tôi đạt được một trang khác. Bất kỳ đề xuất?

Trả lời

4

Vâng, FormsAuthentication.Authenticate() trả về một boolean, vì vậy bạn sẽ biết việc xác thực có thành công hay không. Nếu đúng, bạn có thể chuyển tên người dùng của mình thành Membership.GetUser() và truy cập đối tượng MembershipUser được trả lại để lấy bất kỳ dữ liệu nào bạn cần và lưu trữ dữ liệu đó trong phiên.

if (FormsAuthentication.Authenticate(tbUsername.Text, tbUsername.Text)) { 
    MembershipUser user = Membership.GetUser(tbUsername.Text); 
    // Set session variables here. 
    FormsAuthentication.RedirectFromLoginPage(tbUsername.Text, rememberMe.Checked); 
} 
0

Nếu bạn không sử dụng Kiểm soát đăng nhập, bạn đã thử gọi FormsAuthentication.RedirectFromLoginPage (authorizedUserName, createPersistantCookie); và kiểm tra sau đó?

Nếu bạn đang sử dụng sự kiểm soát đăng nhập, có thể là một sự kiện trên điều khiển bạn có thể xử lý để có được dữ liệu bạn cần, chẳng hạn như LoggedIn

2

Phụ thuộc vào cách bạn làm việc đó nhưng nếu bạn KHÔNG sử dụng ASP Kiểm soát đăng nhập và bạn đang tự thực hiện chính mình, bạn cần đặt AuthCookie như thế này ...

string userName = UserName.Text; 
string password = Password.Text; 

if (Membership.ValidateUser(userName, password)) 
{ 
    FormsAuthentication.SetAuthCookie(userName, true); 

    MembershipUser user = Membership.GetUser(); 

    if(user != null){ 
     // success 
    } 
    else{ 
     // failed 
    } 
} 
Các vấn đề liên quan