Tạo đăng nhập trong Socket.io liệu có làm được không?



  • Hiện tại em vừa học Node Js trong vòng 3 tiếng và cũng có 1 chút vấn đề về kiến thức nên anh/chị bỏ qua cho
    Em có câu hỏi và cũng là thắc mắc đó là: "Theo em hiểu thì mỗi lần request thì id của soket lại thay đổi vậy có cách nào có thể làm được chức năng đăng nhập. Php thì e có thể làm được. Sang tìm hiểu node Js thì hơi bị khó khăn"



  • Theo mình nghĩ là được bạn! server luôn lắng nghe yêu cầu, giống phần mềm chat.
    bạn đăng nhập sao đó dùng emit gửi qua server, server kiểm tra bạn gửi cái gì,và tại đây bạn dùng giải thuật của bạn để kiểm tra đăng nhập thành công hay không rồi send emit lại cho client.
    Client tiếp tục nhận yêu cầu kiểm tra giá trị true hay false, nếu false thì bạn đưa thông bào đăng nhập sai và reload lại page kêu đăng nhập tiếp
    Bạn có thể làm demo chat mini nhỏ gửi và nhận dữ liệu từ socket, sao đó bạn sẽ thấy vấn đề có thể làm



  • @Dương-Cao-Quốc-Huy bạn tham khảo chia sẻ Session nhé, bạn có thể lưu raw cookie - hoặc dùng session id
    https://nodejs.vn/topic/910/socket-io-và-session-của-express



  • Mình nghĩ lưu session vào db rồi trả session id là được mà



  • Nếu bạn để biến kết nối socket toàn cục thì sẽ không mất nhé. có thể bạn để trong 1 hàm nên sau khi thực hiện xong nó giải phóng biến rồi.
    V.đề đăng nhập thì bạn có thể sử dụng token là tiện nhất.
    Khi mở kết nối thì bạn gửi user + pass để đăng nhập nếu đúng thì server gửi lại 1 token (bạn có thể tự tạo ra nó hoặc dùng module cũng đc) sau đó mỗi lần client emit thì gửi kèm token. Server xác thực token hợp lệ thì thực hiện nếu không thì hủy thao tác.
    Mình đang thực hiện cách này không biết còn cách nào khác không mong các bạn chỉ giáo!


Log in to reply