n° 219
Novembre 2017
Dicembre 13, 2017, 05:22:56 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Gestione Scadenza Password utente  (Letto 3768 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
Mircosoft
Jr. Member
**

Karma: +0/-0
Scollegato Scollegato

Messaggi: 70


Mostra profilo
« inserita:: Marzo 07, 2016, 11:48:52 »

Salve,
Scusate la domanda stupida...

Volevo chiedere qual'e' il metodo migliore per gestire la scadenza delle pasword a livello utente...


Mi spiego meglio, In un programma l'accesso ad alcune funzionalità e vincolato al livello operatore che viene identificato inserendo una password apposita.

Per evitare che dopo aver abilitato il livello per l'utilizzo di queste funzionalita' l'opereratore si allontani dal pc lasciandole attive per chiunque  vorrei implementare un tempo di inattività dopo il quale il livello operatore viene ipostato al minimo per garantire la sicurezza.

Qual'e il metodo migliore per identificare l'inattività del programma e di conseguenza resettare il livello?

Ringrazio in anticio.
Registrato
DEV-01
Full Member
***

Karma: +11/-23
Scollegato Scollegato

Messaggi: 472

Me.Shift ^(n)


Mostra profilo E-mail
« Risposta #1 inserita:: Marzo 08, 2016, 05:21:08 »

Ciao,
 
un metodo potrebbe essere intercettare le interazioni utente (come faresti per scrivere un file di log) e memorizzare il valore della fine dell'ultima interazione in una variabile di tipo Date con la precisione desiderata.

Un'altra variabile potrebbe contenere il valore di offset rappresentante il timeout.

Successivamente imposti un controllo tramite timer.

Ricordati di attivare/disattivare il timer quando serve e di non tenere il valore di .interval troppo basso in modo da ottimizzare l'utilizzo delle risorse ed evitare controlli palesemente inutili.

Il timer potrebbe essere attivato dopo il completamento di tutte le routine richiamate da uno specifico evento (tipicamente il click su qualche oggetto e subito dopo l'assegnazione della variabile Date) in modo da garantire l'esecuzione di tutto il codice richiesto ed eseguire il controllo solo al termine (anche le routine "invisibili" fanno parte dell'interazione utente purchè ad esso collegate, ad esempio il controllo della connessione ad internet non deve essere considerato).

Poi ogni tot secondi (o minuti), tramite l'ausilio del timer, effettui una differenza fra date (quella attuale e l'ultima memorizzata) e qualora il valore risulti uguale o maggiore al valore di offset, l'utente viene disconnesso tramite apposita procedura.



Riassumendo:

1) L'utente esegue un interazione;
2) Viene eseguito il codice relativo;
3) Viene assegnato il valore Date.Now alla variabile;
4) Viene avviato il timer che effettua la differenza (Date.Now - valore della variabile);
4.a) Se il valore è superiore all'offset l'utente viene disconnesso.
4.b) Se l'utente avvia una nuova operazione il timer viene disattivato.
Registrato

01000100 01100101 01110110 00101101 00110000 00110001
Mircosoft
Jr. Member
**

Karma: +0/-0
Scollegato Scollegato

Messaggi: 70


Mostra profilo
« Risposta #2 inserita:: Marzo 22, 2016, 12:54:54 »

Grazie mille

Speravo a qulche aiuto in piu' dal "sistema"....

In questo modo anche il semplice movimento del mouse andrebbe intercettato

 
Registrato
DEV-01
Full Member
***

Karma: +11/-23
Scollegato Scollegato

Messaggi: 472

Me.Shift ^(n)


Mostra profilo E-mail
« Risposta #3 inserita:: Marzo 23, 2016, 11:31:15 »

Sostanzialmente si tratta di scrivere una breve classe con un paio di proprietà pubbliche e un paio di metodi pubblici da richiamare tramite la dichiarazione d'istanza da qualsiasi punto del codice.

Se vuoi intercettare il movimento del mouse scrivi la chiamata all'interno del codice relativo, altrimenti potresti decidere di effettuare un hook a qualche API di sistema...

Prova a dare un'occhiata qui:

http://www.codeguru.com/columns/vb/how-to-check-for-application-inactivity-in-.net-2010.htm

PS: La problematica per la quale hai chiesto aiuto non ha nulla a che vedere con il titolo del thread nè tantomeno con la password ma col tempo di inattività dell'applicazione per mancanza di interazione da parte dell'utente.

Si tratta di due cose assolutamente distinte.  Occhiolino Occhiolino Occhiolino
Registrato

01000100 01100101 01110110 00101101 00110000 00110001
Mircosoft
Jr. Member
**

Karma: +0/-0
Scollegato Scollegato

Messaggi: 70


Mostra profilo
« Risposta #4 inserita:: Marzo 30, 2016, 03:11:58 »

Effettivamente il mio scopo era identificare la mancanza di iterazione
Operatore - Programma   
E una volta identificata associarci una chiamata  a funzione per revocare i diritti superiori....


Provando con l'esempio postato (anche con le correzioni per vb.net) ho verificato che funziona
ma mi devo essere perso un pezzo...
perche' riesco ad intercettare i messaggi verso i controlli ma come faccio a restituirli al sistema?
Registrato
Mircosoft
Jr. Member
**

Karma: +0/-0
Scollegato Scollegato

Messaggi: 70


Mostra profilo
« Risposta #5 inserita:: Marzo 31, 2016, 06:02:46 »

Ho capito...Almeno credo


Con il Return False si lascia arrivare il mesaggio al sistema per la gestione
Con il Return True lo si elimina dalla coda

Giusto?
Registrato
DEV-01
Full Member
***

Karma: +11/-23
Scollegato Scollegato

Messaggi: 472

Me.Shift ^(n)


Mostra profilo E-mail
« Risposta #6 inserita:: Aprile 01, 2016, 02:25:29 »

Ciao,

scusami se non ti ho risposto prima.

In realtà ho dato all'articolo una sola e rapida occhiata quindi non saprei dirti.

Potresti raccogliere i dati (orario, oggetto, interazione, stato dell'attivazione utente) e inserirli in una lista da stampare su un file di testo per poterlo esaminare in modo da chiarirti le idee in merito ai valori di ritorno e allo stato del programma (o meglio dell'utente).

Non mi è chiaro perché hai bisogno di restituire i messaggi al sistema (SO?).
Una volta intercettati dovresti utilizzare il valore restituito per effettuare le azioni che preferisci.

L'utente non si logga al programma e si tratta dell'utenza di Windows?
Non puoi utilizzare le impostazioni per la disconnessione temporizzata dell'utente in base al tempo di inattività presenti nel pannello di controllo?

Se vuoi puoi postare il codice vb in modo da aiutarmi a collaborare.
Se sto fraintendendo l'utilizzo anche solo parzialmente ti invito ad aggiungere ulteriori informazioni.

Buona serata.  Occhiolino




Registrato

01000100 01100101 01110110 00101101 00110000 00110001
Mircosoft
Jr. Member
**

Karma: +0/-0
Scollegato Scollegato

Messaggi: 70


Mostra profilo
« Risposta #7 inserita:: Aprile 05, 2016, 08:28:08 »

Grazie della risposta,

Ho risolto semplicemente restituendo sempre false come risultato della funzione in modo da non intaccare il normale funzionamento del programma dopo aver verificato se intervenire oppure no sul tempo di logIn
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines