2011-11-25 31 views
18

Tôi có các tùy chọn nào để sử dụng cùng một mã JavaScript để xác thực cả ở phía máy khách và phía máy chủ (Node.js)?Xác thực JavaScript hoạt động trên cả máy khách và máy chủ Node.js?

+1

Tôi đã kết thúc bằng văn bản xác thực của riêng mình. Về cơ bản, tôi có một mô hình, ví dụ: Người đã xác thực trên đó. Mô hình Person này tồn tại cả trên máy khách và máy chủ. Khi người dùng nhập chi tiết vào FORM của tôi, tôi điền đối tượng Person và xác thực nó, đưa ra phản hồi cho các trường không chính xác. Khi biểu mẫu được POST trở lại máy chủ, tôi điền lại đối tượng Person và xác nhận lại với các giá trị nhận được từ máy khách. Nếu có lỗi, tôi chỉ cần gửi lại cho khách hàng. Bằng cách này tôi có thể tái sử dụng cùng một mô hình cả trên máy khách và máy chủ, chạy thử nghiệm đơn vị và hiển thị lỗi với jquery. –

Trả lời

-14

Không, bạn đang xác thực các tiêu chí hoàn toàn khác nhau ở phía máy chủ. Xác nhận phía máy khách hoàn toàn là tiêu chí chấp nhận của người dùng và không liên quan gì tới bảo mật. Xác thực phía máy chủ hầu như chỉ quan tâm đến bảo mật.

+10

Tôi không đồng ý. Bỏ qua XSS và tiêm khác, tôi vẫn muốn xác nhận rằng một trường biểu mẫu là ký tự X dài và là một mã bưu điện. Nếu không thì sẽ không có gì ngăn cản tôi đi vào Firebug và thay đổi các giá trị được gửi đến máy chủ. Và việc sử dụng JavaScript cả trên máy khách và trên máy chủ sẽ có nghĩa là sử dụng lại mã. Nó sẽ là ngớ ngẩn không. –

+0

XSS và các lỗ hổng tiêm khác không thể bỏ qua, do đó, quan điểm của bạn không liên quan. – austincheney

+0

Tôi nghĩ rằng quan điểm của anh ta có vẻ hợp lệ. Tôi muốn xác minh rằng email là một email trên cả máy khách và máy chủ mà không cần viết chính xác cùng một mã trong cùng một ngôn ngữ chính xác hai lần. Xem đá quý đường ray này cho một ví dụ: https://github.com/bcardarella/client_side_validations – rgbrgb

8

Hãy xem revalidator. Nó được mô tả là "Trình xác thực cross-browser/node.js được sử dụng bởi resourceful và flatiron."

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