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

Nguyen Ca viết 22:04 ngày 30/09/2018

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.

Reoteu Ray viết 21:55 ngày 30/09/2018

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

Itachi Citus viết 21:55 ngày 30/09/2018

Ý 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.

Reoteu Ray viết 22:05 ngày 30/09/2018

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???

Nguyen Ca viết 22:03 ngày 30/09/2018

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.

Reoteu Ray viết 21:54 ngày 30/09/2018

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 à…

Itachi Citus viết 22:01 ngày 30/09/2018

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ì?

Reoteu Ray viết 22:06 ngày 30/09/2018

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…

Itachi Citus viết 22:05 ngày 30/09/2018

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à /*

Reoteu Ray viết 21:58 ngày 30/09/2018

okay cảm ơn bạn…

Bài liên quan
0