示例#1
0
        /// <summary>
        ///     Vérfication d'un jeton.
        /// </summary>
        /// <param name="token">Jeton vérifié.</param>
        /// <returns>ID de l'utilisateur.</returns>
        internal Guid CheckEntry(Guid token)
        {
            try
            {
                // Recherche de l'entrée.
                AuthenticationEntry entry = Entries.Single(e => e.Token == token);

                // Vérification de l'entrée
                if (entry == null)
                {
                    throw new AuthenticationException("Invalid token '{0}'...", token)
                          {
                              Display = BundleId.ERROR_INVALID_TOKEN
                          };
                }

                // Vérification de l'expiration
                if (DateTime.Now > entry.Expiration)
                {
                    Entries.Remove(entry);
                    throw new AuthenticationException("Session has expired...")
                          {
                              Display = BundleId.ERROR_EXPIRED_SESSION
                          };
                }

                // Mise à niveau de l'expiration et renvoi
                entry.Expiration = DateTime.Now.AddSeconds(entry.Timeout);
                return(entry.UID);
            }
            catch (Exception ex)
            {
                throw new AuthenticationException(ex, "Authentication failed !");
            }
        }
示例#2
0
        /// <summary>
        ///     Ouvre une entrée dans le registre et retourne le jeton.
        /// </summary>
        /// <param name="user">Utilisateur authentifié.</param>
        /// <returns>Jeton de la session.</returns>
        public Guid OpenEntry(User user)
        {
            var add = new AuthenticationEntry(user);

            Entries.Add(add);
            return(add.Token);
        }
示例#3
0
        /// <summary>
        ///     Clôture une entrée du registre.
        /// </summary>
        /// <param name="token">Jeton de la session.</param>
        /// <returns>true en cas d'entrée trouvée, false sinon.</returns>
        public bool CloseEntry(Guid token)
        {
            AuthenticationEntry entry = Entries.SingleOrDefault(e => e.Token == token);

            return(Entries.Remove(entry));
        }