2012-01-07 28 views
6

Tôi xác thực phía máy chủ với express.session. Cách thông thường để giao tiếp với phía máy khách thông tin phiên là đặt lại trang với phía máy chủ HTML mới được tạo ra, nhưng điều này đòi hỏi phải tải lại.Truy cập thông tin phiên máy chủ trên máy khách mà không cần tải lại hoặc yêu cầu thêm

Tôi có một ứng dụng một trang và muốn tránh tải lại. Có cách nào để truy cập thông tin về phía máy khách của người dùng được kết nối không? Thông tin này có được lưu trữ trong cookie không? Làm thế nào tôi có thể truy cập nó mà không cần tải lại trang hoặc thực hiện một yêu cầu máy chủ bổ sung?

+2

Thực hiện một tuyến đường trong nhanh mà trả về một số dữ liệu phiên người dùng trong json và lấy nó với một yêu cầu ajax về phía khách hàng. – stagas

+0

Khi bạn nói "một ứng dụng trang", bạn có thực sự có nghĩa là hai trang, một trang đăng nhập và một trang ứng dụng không? Hay một trang chứa cả biểu mẫu đăng nhập và ứng dụng? – Stobor

+0

@Stobor: Đó là điều. Tôi muốn hợp nhất trang đăng nhập với phần còn lại và hiển thị trang này hoặc trang khác tùy thuộc vào 'express.session'. – Randomblue

Trả lời

3

Cách duy nhất để làm được điều này sẽ là một trong hai bao gồm các thông tin trong phản ứng máy chủ ban đầu (có lẽ là một đối tượng JS tạo động nhúng trong HTML) hoặc bằng cách làm cho một yêu cầu thứ hai là alessioalex gợi ý.

Nó không thể để có được thông tin từ máy chủ mà không nói chuyện với máy chủ ...

+0

Có, tôi quan tâm đến các cách tôi có thể điền đáp ứng máy chủ ban đầu. Tôi muốn giữ các trang phân phát tĩnh (tức là không sử dụng những thứ lạ mắt như Jade). Tôi đang nghĩ đến việc sử dụng cookie ... – Randomblue

+0

Nếu bạn đang tìm kiếm nội dung động phục vụ trong một đối tượng javascript, bạn sẽ bị buộc phải sử dụng một số loại công cụ như ngọc bích để cư trú nó. Tôi đoán việc thiết lập thông tin trong cookie là có thể, và sau đó truy cập chúng trên máy khách (document.cookie tôi tin), tuy nhiên nếu dữ liệu được an toàn, tôi sẽ không khuyến cáo điều này. Bạn không thể chắc chắn cách hệ thống người dùng sẽ xử lý/lưu trữ/xử lý các cookie. Nếu bạn làm theo cách này, bạn không bao giờ nên tin tưởng thông tin ở phía máy chủ cookie. Thông tin cookie có thể được người dùng thay đổi và không được sao chép lại vào phiên –

+0

Nếu bạn đang tìm cách đặt cookie, bạn có thể sử dụng https://github.com/jed/cookies. Tôi không sử dụng nó (và có thể có một cách dễ dàng hơn trong thể hiện bản thân), tuy nhiên tôi không có thời gian ngay bây giờ để kiểm tra. –

3

Như @stagas đề xuất, bạn có thể tạo tuyến đường tùy chỉnh với Express, chẳng hạn như /user và trả về dữ liệu phiên (chi tiết người dùng) bằng cách sử dụng JSON. Bằng cách đó bạn sẽ không cần phải làm mới trang.

Ví dụ:

app.get('/user', function (req, res) { 
    res.json(req.session.user); 
}); 
+0

Tôi không muốn yêu cầu thêm ... – Randomblue

+0

Bạn có thể sử dụng một phần mềm trung gian cookie, nơi bạn có thể đặt thông tin về người dùng, nhưng tôi sẽ không dựa vào đó để kiểm tra xem người dùng có đăng nhập hay không. Cookie không an toàn nhất, vì vậy nếu bạn thực sự không muốn yêu cầu thêm vào máy chủ, hãy lưu trữ thông tin không cần thiết ở đó (ví dụ giới tính, tuổi tác, v.v.). – alessioalex

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