2012-07-30 30 views
5

Tôi có mã này khi đăng nhập Người dùng, chuỗi sUserData đó được đặt chính xác.Xác thực biểu mẫu không xác thực người dùng đúng cách

Dim sUserData As String = HttpContext.Current.Request.Cookies("UserID").Value & "|" & HttpContext.Current.Request.Cookies("UserName").Value & "|" & HttpContext.Current.Request.Cookies("UserEmail").Value 

    Dim fat As FormsAuthenticationTicket = New FormsAuthenticationTicket(1, _ 
    HttpContext.Current.Session("UserID"), DateTime.Now, _ 
    DateTime.Now.AddDays(6), True, sUserData, _ 
    FormsAuthentication.FormsCookiePath) 
    HttpContext.Current.Response.Cookies.Add(New HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(fat))) 

Sau đó, tôi có mã nơi tôi kiểm tra xem người dùng nếu đăng nhập vào một phương pháp chung (tĩnh) trong một lớp công cộng như thế này:

If HttpContext.Current.User.Identity.IsAuthenticated Then 
EndIf 

Và đó chỉ hoạt động tốt, nhưng nếu tôi đặt cùng một dòng trong Page_Load thay vì một phương pháp chung của một lớp nó sẽ không bao giờ đi vào tuyên bố Nếu đây

If HttpContext.Current.User.Identity.IsAuthenticated Then 
    EndIf 

tại sao điều này xảy ra, và có một số cách để tái viết này để làm việc trong số- đằng sau Page_L oad thay vì phải đặt nó trong một lớp, Lớp được sử dụng trong một tiêu đề để cho phép truy cập vào các trang nhất định - vì vậy mà hoạt động tốt. Nhưng tôi cần một cách khác để xác thực người dùng trên trang Mặc định để thay đổi nhãn và nút dựa trên thời tiết người dùng đăng nhập hay không và điều này không thể thực hiện được trong lớp học.

+0

Có lý do cụ thể nào bạn đang tạo cookie đó theo cách thủ công thay vì sử dụng 'FormsAuthentication.SetAuthCookie()' Mã của bạn có thể hoạt động hay không, nhưng .NET sẽ làm điều đó cho bạn. (chỉ là một quan sát). –

+0

vâng, có - nó phải như thế này, đã có 10k cộng với người dùng, và công việc của tôi không phải là thay đổi tất cả nó chỉ làm cho mã của tôi hoạt động với db hiện tại –

+0

Không phải bạn đang cố gắng kiểm tra cờ trong SAME yêu cầu bạn tạo cookie? Thao tác này sẽ không hoạt động vì ngữ cảnh sẽ được đặt bắt đầu từ yêu cầu bên cạnh yêu cầu bạn đặt cookie. –

Trả lời

2

Bạn đã thử đặt sự kiện trang ghi đè vào ghi đè sự kiện trang thực tế (tức là OnLoad) thay vì triển khai móc sự kiện Page_Load chưa? Hiệu suất cao hơn (ít lớp gọi), sự khác biệt nhỏ trong vòng đời có thể phù hợp với nhu cầu của bạn và có thể làm chưng cất nguyên nhân của những triệu chứng này.

có thể là sự cố sắp xếp/điều kiện chủng tộc nếu ngữ cảnh của cuộc gọi phương thức tĩnh và Page_Load, tôi nghĩ Wiktor Zychla đã chỉ cho bạn theo hướng của người chơi.

+0

Tôi đã tìm ra, đó là đúng hướng - sUserData của tôi luôn đúng, nhưng tôi không nhận ra đó là phiên (" UserID ") không được đặt sau đó toàn bộ vé xác thực không được đặt, thực sự nó được đặt, nhưng giá trị trống –

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