19 messaggi dal 01 settembre 2006
Buon giorno,
sto sviluppando un applicazione, con un area riservata.
L'area riservata utilizza la classe identity, attraverso un database sql installato nel server.

Ho la necessità di creare una tabella Sql dove vengono memorizzati gli accessi (Validati e non).

Inoltre avrei la necessità di indicare nella pagina quanti utenti sono attualmente connessi.


Grazie
Luca
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Luca,

elettrodigital ha scritto:

Ho la necessità di creare una tabella Sql dove vengono memorizzati gli accessi (Validati e non).

nel tuo AccountController, c'è un punto in cui invochi SignInManager.PasswordSignInAsync che ti restituisce l'esito della validazione di username e password.

In quel momento, puoi inviare un comando al database per aggiungere una riga alla tua nuova tabella, con la data/ora, il nome utente e l'esito della validazione. Avevi già pensato a questa soluzione?

Altrimenti, il modo tradizionale di fare auditing in un'applicazione ASP.NET è usare l'Health Monitoring. Ci sono degli eventi appositi per login falliti e riusciti (li trovi nel namespace System.Web.Management) e li puoi salvare in un database come ti mostra questo video.
http://www.asp.net/web-forms/videos/how-do-i/how-do-i-write-web-events-to-a-sql-server-database-using-the-sqlwebeventprovider

elettrodigital ha scritto:

Inoltre avrei la necessità di indicare nella pagina quanti utenti sono attualmente connessi.

Potresti aggiungere una nuova proprietà al tuo ApplicationUser, come vedi fare in questo articolo di Marco De Sanctis.
http://www.aspitalia.com/script/1176/Memorizzare-Informazioni-Personalizzate-Account-ASP.NET-Identity.aspx
La proprietà sarà di tipo DateTime e, ad ogni richiesta di pagina da parte dell'utente, valorizzala con la data/ora corrente.
Poi, fai una query LINQ su UserManager.Users, per ottenere il conteggio di tutti gli utenti la cui data è inferiore a 20 minuti. Quello sarà il numero degli utenti online.
Questo imita un po' quel che già succedeva con Membership API: la classe MembershipUser disponeva di una proprietà LastActivityDate di cui puoi leggere qui:
https://msdn.microsoft.com/it-it/library/system.web.security.membershipuser.lastactivitydate(v=vs.110).aspx

Altrimenti, se non ti interessa mostrare questo dato al pubblico, puoi semplicemente usare qualche strumento tipo Google Analytics che ti mostra il traffico nel tuo sito in tempo reale, compreso il numero dei visitatori.

ciao,
Moreno
Modificato da BrightSoul il 21 gennaio 2015 00.26 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.