2012-07-25 31 views
7

Tôi đang làm việc trong Ứng dụng MVC3 với Dao cạo. Trong bộ điều khiển Tài khoản của tôi sau khi xác thực người dùng, tôi đang nhận được ClientID của người dùng từ Cơ sở dữ liệu. Ở đây tôi muốn tồn tại ClientID trong biến Session. đã được sử dụng trên tất cả các bộ điều khiển và xem Razor.Làm thế nào để duy trì dữ liệu sử dụng biến phiên trong chế độ xem dao cạo mvc3?

Tôi không biết làm cách nào tốt nhất để triển khai điều này.OR Cách duy trì dữ liệu trong biến phiên. Và cách sử dụng dữ liệu được lưu giữ trong biến phiên trong bộ điều khiển.

Cảm ơn sự giúp đỡ của bạn ..

+0

Điều này có thể hữu ích http://www.hanselman.com/blog/TroubleshootingExpiredASPNETSessionStateAndYourOptions.aspx – ManirajSS

Trả lời

2

Nếu bạn đang sử dụng Xác thực mẫu ASP.NET, tên người dùng đã được lưu trữ trong cookie. Bạn có thể truy cập nó từ Bộ điều khiển qua

Controller.User.Identity.Name 

Có thể lưu ID người dùng làm tên người dùng. Khi bạn gọi một cái gì đó như

FormsAuthentication.RedirectFromLoginPage 

Đặt ID thay vì tên. ID có thể được tìm thấy bằng cách sử dụng phương pháp trên và không cần thêm dữ liệu phiên bổ sung. Nếu bạn muốn lưu trữ nội dung nào đó trong phiên, chỉ cần gọi

Session["UserID"] = value; 

Từ bộ điều khiển của bạn.

+0

Cảm ơn phản hồi của bạn .. Trên thực tế chúng tôi đang thực hiện truy cập thuê đa cho Khung của chúng tôi. Vì vậy, tôi hơi bối rối về sự bền bỉ dữ liệu trên bộ điều khiển. vì vậy bạn có thể gợi ý cho tôi phương pháp tiếp cận nào tốt hơn không? – user10489

18

Tôi thường viết một wrapper phiên cho phép tôi dễ dàng truy cập vào nó trong tương lai:

public class SessionData 
{ 
    const string ClientId_KEY = "ClientId"; 

    public static int ClientId 
    { 
     get { return HttpContext.Current.Session[ClientId_KEY] != null ? (int)HttpContext.Current.Session[ClientId_KEY] : 0; } 
     set { HttpContext.Current.Session[ClientId_KEY] = value; } 
    } 
} 

Sau đó bạn có thể truy cập nó từ bất cứ nơi nào như thế này:

int clientId = SessionData.ClientId; 

Nếu bạn muốn, bạn có thể sử dụng toàn bộ đối tượng trong phiên như thế này.

Hoặc bạn có thể thiết lập nó như vậy: SessionData.ClientId = clientId;

+0

Cảm ơn bạn đã phản hồi ... Về cơ bản, chúng tôi đang triển khai quyền truy cập Nhiều người thuê cho khung của chúng tôi. Vì vậy, phiên là cách tiếp cận tốt? Và tôi đang nhận được ClientID dựa trên người dùng đã đăng nhập từ DB. Vậy làm thế nào tôi có thể ràng buộc CliendID trong biến Session? – user10489

+0

Tôi không thể biết tất cả các tác động và yêu cầu của dự án của bạn, nhưng cho đến nay tôi không thấy bất kỳ vấn đề nào khi sử dụng Phiên. Tôi đã cập nhật câu trả lời của mình để cho thấy cách bạn có thể đặt ClientId trong phiên bằng cách sử dụng trình bao bọc. – Dmitry

+0

Lợi thế khi viết một trình bao bọc để truy cập phiên – Nipuna

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