Προς το περιεχόμενο

Χρήστες Online


Uberalles_gr

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα παιδιά.

 

Λοιπόν, το πρόβλημα μου είναι το εξής :

 

Έχουμε μία εφαρμογή όπου για να μπει κάποιος πρέπει να εισάγει Username και Password.

 

Το θέμα είναι όταν μπεις ένα χρήστης με τα συνθηματικά του και κατά την διάρκεια που είναι μέσα στην εφαρμογή, να μην μπορεί ταυτόχρονα με τα ίδια συνθηματικά να μπει και κάποιος άλλος.

 

Αυτό που έχω σκεφτεί είναι να υπάρχει ένα πεδίο στην βάση το οποίο όταν θα μπει κάποιος με τα συνθηματικά του από off να γίνει on και έτσι όταν θα πάει κάποιος άλλος να μπει θα δει το σύστημα ότι ο συγκεκριμένος χρήστης είναι on και θα φάει "πόρτα".

 

Και πολύ ωραία όταν ο άλλος θα κάνει Logout από On θα γυρίσει σε Off.

 

Η απορία μου και εκεί που έχω κολήσει είναι εάν ο χρήστης που είναι μέσα ΔΕΝ πατήσει logout και κλείσει την σελίδα, τότε πως θα ενημερώσω την βάση μου ότι βγήκε?

 

Υ.Γ. δεν ήξερα τι τίτλο να βάλω

Δημοσ.

Μπορείς να κάνεις πολλά πράγματα. Καταρχάς καλό είναι να αποθηκεύεις τα Sessions σου στη βάση. Μετά πρέπει να καταχωρείς πότε έκανε κάτι ένα Session. Μετά μπορείς είτε όταν γίνεται οποιοδήποτε page refresh είτε με κάποιο cron job να τσεκάρεις πόσα sessions υπάρχουν και πότε ήταν το last activity.

Δημοσ.

Η λογική που έχεις είναι σωστή το να χρησιμοποιήσεις ενα flag το οποίο θα αλλάζει ανάλογα με το αν ο χρήστης είναι logged in ή logged out. Για να "πιάσεις" πότε ένας χρήστης έκλεισε απλά το browser ή κόλησε χωρίς να κάνει log out θα πρέπει να έχεις και ενα timestamp το οποίο θα ανανεώνεις και θα συγκρίνεις συνεχώς με μια fixed τιμή για timeout (πχ 15 λεπτά) για όσο ο χρήστης "κυκλοφορεί" στο site. Αν ο χρήστης κλείσει το browser το timestamp παύει να ανανεώνεται οπότε σε κάποια φάση η σύγκριση θα σου βγάλει ότι ο χρήστης έκανε time out οπότε γυρίζεις το flag του σε logged out. Το μειονέκτημα είναι ότι για αυτά τα 15 λεπτά δεν θα μπορεί να κάνει login με τα ίδια credentials.

Δημοσ.

Και εγώ αυτό σκέφτηκα HighT3ch, με το timestamp αλλά δεν μου αρέσει για τον λόγο που είπες.

 

Π.χ. μπαίνω εγώ τώρα και το κλείνω αμέσως. Για 10 ή 15 ή 20 λεπτά που θα έχω βάλει δεν θα μπορεί να μπει.

 

Κάποια άλλη ιδέα?

Δημοσ.

Απλώς θέλω όταν ένας χρήστης είναι μέσα να μην μπορεί να μπει κάποιος άλλος με τα ίδια συνθηματικά

 

---------- Το μήνυμα προστέθηκε στις 14:54 ----------

 

Μου ήρθε μία ιδέα με COOKIES.

 

θα το δοκιμάσω

Δημοσ.
Το μειονέκτημα είναι ότι για αυτά τα 15 λεπτά δεν θα μπορεί να κάνει login με τα ίδια credentials.

 

Δηλαδή αν εγώ κλείσω το browser και το ξανανοίξω δεν θα μπορώ να κάνω Login για 15 λεπτά :shock:? Λύση είναι αυτή?

Δημοσ.

alexandr0s δεν φταίει η τεχνική που κάνεις track τον user αλλά το locking που κάνει ο φίλος. Αν χρησιμοποιήσει συνδυασμό cookies και sessions o Uberalles_gr θα την βρει την λύση. Εγώ γιαυτό και ρώτησα ποιός ο λόγος που επιθυμεί το κλείδωμα του account και κατά πόσον απαραίτητο είναι αυτό - εξ ου και τα προβλήματα που προκύπτουν. Αν επρόκειτο για μια σελίδα θα του έλεγα να χρησιμοποιήσει javascript (onBeforeUnload) και να κανει trigger ένα κώδικα να τον κάνει log out αλλά θέλει κάτι πιο sophisticated. Για να μην λέμε αρλούμπες στον φίλο το παρόν θέλει σκέψη αν θέλει να κάνει κάτι σοβαρό - οπότε και προτιμώ να το σκεφτώ περισσότερο για να προτείνω κάτι άλλο. Αν εσύ έχεις κάποια ιδέα πρακαλώ να μας την παραθέσεις για να μάθουμε και οι υπόλοιποι.

Δημοσ.

Ουτε εγω μπορω να δω λογω που κατι τετοιο χρειάζεται. Εκτος εαν πρεπει να μην διαχειρίζονται τα ιδια δεδομένα που ανηκουν σε ενα χρηστη 2 η περισσοτερα ατομα ταυτοχρονα και δεν υπάρχει αλλος μηχανισμός προστασιας..

 

Εγω θα χρησιμοποιούσα μια μεταβλητη global του τυπου user['alex'

]=timestamp. Καθε φορά που επισκεπτόταν ο χρηστης alex μια σελίδα θα ενημερωνόταν το stamp . Ετσι εαν ο χρονος απο το τωρα εως το σταμπ δεν ειναι μεγαλυτερος απο 15 η δεν ειναι -1 ας πουμε η τιμη τοτε ο χρηστης ειναι λογκιν αρα δεν πρεπει να μπει αλλος. Αλλιως θα μπορει να κανει λογκιν αλλος. Εγω αυτο σκεφτομαι μονο ως λυση

Δημοσ.

η εφαρμογή θα ειναι προσβάσιμη στο κοινό, απο internet?

ή σε ενα intranet, με χρήστες που ανήκουν όλοι σε συγκεκριμένη ομαδα (υπαλληλοι της εταιρείας) ?

 

 

στην 1η περίπτωση, το να κλειδωνεται ο χρηστης για Χ λεπτά, επειδη δεν εκανε logout, ειναι απαράδεκτο,

και επεισης δεν καταλαβαινω ποιος ο λογος να μην μπαινει απο 2 pc ταυτόχρονα.

Στο webmail μου , ή στο φορουμ, γιατι να μην με αφήνει να μπω απο 2 pc ταυτόχρονα; πρέπει να κανεις διάκριση των sessions για να μην μπλέκουν τα μπουτια τους 2 instances του ιδιου χρήστη.

 

 

 

 

 

 

Στη 2η περίπτωση, υπάρχουν αρκετοί λογοι να θελεις το 1-user-1-login, και μπορεις να ενημερώσεις/εκπαιδεύσεις για το locking τους χρήστες.

οτι ειναι μεσα στις απαιτήσεις της εφαρμογής, όπως πχ, λεμε οτι χρειάζεται minimum αναλυση 1024χ768, IE7+, ή mozilla 3+, τους λες οτι ή θα κάνετε κανονικα logout, ή θα περιμένετε Χ λεπτά για login.

(εννοείται, οτι τον αριθμό των Χ λεπτών που θα κρατάει το κλειδωμα, να το συζητήσεις με τον πελάτη, και να είναι παραμετρικό, με τα υπερ και τα κατά ενός πολυ σύντομου, ή ενός μεγάλου χρονικού διαστήματος)

Δημοσ.
alexandr0s δεν φταίει η τεχνική που κάνεις track τον user αλλά το locking που κάνει ο φίλος. Αν χρησιμοποιήσει συνδυασμό cookies και sessions o Uberalles_gr θα την βρει την λύση. Εγώ γιαυτό και ρώτησα ποιός ο λόγος που επιθυμεί το κλείδωμα του account και κατά πόσον απαραίτητο είναι αυτό - εξ ου και τα προβλήματα που προκύπτουν. Αν επρόκειτο για μια σελίδα θα του έλεγα να χρησιμοποιήσει javascript (onBeforeUnload) και να κανει trigger ένα κώδικα να τον κάνει log out αλλά θέλει κάτι πιο sophisticated. Για να μην λέμε αρλούμπες στον φίλο το παρόν θέλει σκέψη αν θέλει να κάνει κάτι σοβαρό - οπότε και προτιμώ να το σκεφτώ περισσότερο για να προτείνω κάτι άλλο. Αν εσύ έχεις κάποια ιδέα πρακαλώ να μας την παραθέσεις για να μάθουμε και οι υπόλοιποι.

 

Την έχω γράψει τη λύση που προτείνω.

Δημοσ.

Επιμένω ότι ο μόνος τρόπος να διατηρήσεις το security ενός τέτοιου μηχανισμού σε υψηλά επίπεδα είναι - δυστυχώς - με locking για Χ χρονικό διάστημα (εάν δεν ακολουθηθεί η ορθή έξοδος από το σύστημα) όπως ανέφερα στην αρχική απάντησή μου. Εφόσον το θέμα του locking είναι απαραίτητο υπάρχουν και επιπτώσεις που θα πρέπει ο χρήστης να γνωρίζει εαν και εφόσον δεν είναι προσεκτικός στις κινήσεις του. Εκ προϊμίου η χρήση ενός τέτοιου secure μηχανισμού προϋποθέτει ότι ο χρήστης έχει το γνωστικό επίπεδο να λειτουργεί σε ένα τέτοιο secure περιβάλλον και δεν πρόκειται για ένα τυχαίο web user. Από κει και πέρα οποιαδήποτε άλλη μεθοδολογία αφήνει τρύπες. Δεν είναι όλες οι καταστάσεις προβλέψιμες - πχ δεν είναι απαραίτητο ο χρήστης να πατήσει το X για να κλείσει το παράθυρό - τι θα συμβεί αν ο χρήστης τραβήξει το καλώδιο από την πρίζα ή πέσει ο γενικός. Αν κάποιος βρει ένα τέτοιο μηχανισμό σε web application που θα είναι secure, θα κάνει track τον χρήστη και θα μπορεί να φροντίζει την συνεχή είσοδο-έξοδο του χρήστη σε όλες τις περιπτώσεις θα ήθελα να δω την υλοποίηση και προφανώς να τον συγχαρώ.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...