2010-02-15 32 views
14

Tôi nhận được sự rung cảm bằng cách sử dụng biến phiên là loại nhìn xuống khi trong ASP.NET MVC.asp.net mvc - nơi lưu trữ userid - số nguyên?

Một khi người dùng đăng nhập vào, tôi muốn giữ lại userId của người sử dụng vì vậy mà tôi không cần phải truy vấn tất cả các thời gian vv

cách hiệu quả nhất để làm điều đó trong ASP.NET MVC là gì ?

Trả lời

18

Tôi đã thấy các câu hỏi tương tự bật lên một lần trong một thời gian và tôi không thể tìm ra nơi "rung cảm" này đến từ đâu. Đây là phiên được thiết kế đặc biệt cho - để lưu trữ thông tin liên quan đến phiên. Hoàn toàn không có gì sai khi sử dụng Session để lưu trữ id người dùng hoặc thông tin tương tự.

+0

Cảm ơn bạn! * bình luận phụ *. –

+2

Sự rung cảm là từ những người không chính xác sử dụng Phiên làm việc xác thực chính xác là những gì progtick đang làm. – jfar

+1

Tôi nghĩ rằng các nhà cung cấp thành viên/hồ sơ xử lý tất cả điều này cho bạn, mà việc sử dụng nó được khuyến khích bởi Microsoft. Họ thậm chí còn bao gồm một ví dụ về ứng dụng mẫu. –

0

Trạng thái phiên. Không nên sử dụng nó khi nó không thích hợp. Nhưng không có gì khác hoàn toàn phù hợp với thông tin đăng nhập. Chỉ cần đảm bảo chúng có thể được tuần tự hóa, để bạn có thể đẩy phiên ra khỏi quá trình khi cần.

+1

"Nhưng không có gì khác hoàn toàn phù hợp với thông tin" Cái gì? Giống như cookie và FormsAuthentication? Cookie ổn định hơn 1000% so với Phiên. – jfar

+0

Tại sao bạn không thể chỉ kiểm tra phiên và có đăng nhập lại nếu nó không có sẵn? Tôi không hoàn toàn theo dõi tại sao các cookie lại tốt hơn. –

+0

Và tôi không tranh luận - tôi thực sự muốn nghe thêm về điều này. –

2

Phiên có nghĩa là được sử dụng cho tương tác người dùng trạng thái - một giỏ hàng sẽ đến với bạn. Họ được xem xét bởi vì họ đang đau đớn để kiểm tra và có xu hướng buộc logic serialization vào bộ điều khiển. Nếu bạn chỉ muốn giảm thiểu truy vấn, bạn nên sử dụng bộ nhớ đệm.

CHỈNH SỬA: Hướng dẫn cho HttpContext.Cache đáng ngạc nhiên là khó có thể xảy ra. Steven Sanderson có ~ 4 trang trong Pro ASP.net MVC Framework (Apress 2009) p. 530-534.

Caching in asp.net-mvc cũng có thể cung cấp cho bạn một số gợi ý.

+0

bạn có thể đăng liên kết tới bộ nhớ đệm asp.net mvc không? – TPR

8

Bạn có cảm giác phù hợp. Nó chỉ là không cần thiết trong nhiều kịch bản. Trạng thái phiên có thể dễ dàng bị mất và thường bị lạm dụng để xử lý người dùng đã đăng nhập (thiết lập người dùng được đăng nhập được thực hiện bằng cách đặt Phiên ["IsLoggedIn"] = true hoặc bằng cách kiểm tra Phiên ["Người dùng"]! và người dùng đã đăng xuất), khi sử dụng xác thực biểu mẫu. Ở đây bạn có thể đọc về hình thức xác thực và lưu trữ dữ liệu bổ sung với nó:

Forms Authentication Configuration and Advanced Topics

Nếu bạn vẫn muốn sử dụng phiên, nó là tốt để tạo wrapper để làm cho nó kiểm chứng hơn và thoát khỏi chuỗi trong mã:

Wrapper for ASP.NET Session

+0

Bạn sẽ không sử dụng biểu mẫu auth và sau đó lưu tên người dùng, v.v ... trong phiên không? –

+1

@ d03boy: Tên người dùng được lưu trữ trong biểu mẫu cookie xác thực theo mặc định.Bạn có thể thêm id của người dùng. Nếu bạn mất phiên (và nó có thể xảy ra trong nhiều tình huống, ví dụ như khi ai đó thay đổi web.config), bạn có dữ liệu của bạn ở nơi an toàn và không phải xây dựng lại nó. OK, bạn có thể sử dụng phiên, nhưng hãy nhớ rằng nó có thể bị mất khi người dùng đăng nhập. – LukLed

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