30/09/2018, 19:51
Làm sao để kiểm tra 1 member
mình đang làm 1 website bằng java nên muốn làm chức năng kiểm tra member đang online hay offline . mình đã viết đc phần kiểm tra đang nhập bằng session rồi lưu phần thông tin đăng nhập đó vào database , nhưng giờ không biết làm sao để kiểm tra member đó đã logout hay chưa member tính là logout nếu bấm vào nút logout hoặc quá thời gian session …phần kiểm tra nó bấm nút logout hay chưa thì mình làm đc rồi…còn làm sao để biết member đó quá thời gian session
Bài liên quan
Lưu thời gian lần cuối active(lần cuối request lên server), .mỗi lần lên thì kiểm tra nếu vượt quá thời gian cho phép thì tự remove session.
mỗi lần lên là sao bạn…ai lên ??..nếu trong lúc vẫn chưa hết time out nhưng nó tắt browser đi thì cũng phải cập nhật trong csdl là nó đã logout
Ý của nguyenhuuca là mỗi lần có 1 request từ user đó lên server thì bạn lưu thời gian đó vào session (hoặc csdl). Khi có yêu cầu kiểm tra xem người dùng đó đang online hay offline thì lấy thời gian hiện tại trừ đi thời gian của lần request cuối cùng đó chứ không nhất thiết phải lưu giá trị online offline riêng trong csdl.
hix làm sao để kiểm tra từng request mà user đó gửi lên đc vậy bạn , có phải dùng method public long getLastAccessedTime() này ko vậy …
oke vậy cho mình hỏi luôn cái session timeout có nó là gì vậy , có phải là khoảng thời gian mặc định sẳng cho mỗi session hay ko vậy , ví dụ như mình set timeout cho nó là 15’ thì có nghĩa là sau 15’ session này sẽ timeout bất kể user vẫn đang tương tác với server hay là sau 15’ mà user ko có tương tác với server thì session sẽ time out???
Nó là thời gian sau 15’ user không tương tác thì sẽ timeout,
Nếu đang sử dụng framework nào đó để build web thường sẽ có phần quản lý luôn session timout này.
Tự viết thì phải tự handle thôi.
như vậy có nghĩa là mình phải lưu lại thời gian lần resquest cuối cùng của user lên server rồi căn cứ vào đó để set cho user đó offline ?? nếu như vậy thì mình phải set thời gian request ở tất cả method xử lý có liên quan đến user à…
Tùy vào framework, ngộn ngữ bạn sử dụng nó sẽ có một cái gọi là middleware, hook, interceptor, filter… Tên thì tùm lum nhưng tác dụng của nó là can thiệp vào giữa quá trình xử lý requests/reponses. Bạn có thể xử lý để chèn thông tin lần request cuối của một user ở cái này chứ không cần phải can thiệp vào tất cả methods/controllers. Không biết bạn xài framework gì?
mình đang dùng java để làm , dùng jsf để làm giao diện + controller , còn ejb để làm model…bạn có thể gợi ý framework nào bên java làm mấy cái này ko…
JSF nó có một cái là filter á bạn. Bạn để ý cái LoginFilter.java và cái web.xml ở đây nè http://www.itcuties.com/j2ee/jsf-2-login-filter-example/
Mọi request đi vào đường dẫn /secured/* sẽ đi vào hàm doFilter của lớp LoginFilter xử lý trước khi đi qua mấy lớp controller khác. Bạn có thể tạo một cái filter khác để lưu lại thời gian truy cập cuối của người dùng tương tự, thay vì đường dẫn /secured/* thì sẽ là /*
okay cảm ơn bạn…