示例#1
0
 /// <summary>
 /// Запомнить имя пользователя в cookies
 /// </summary>
 public void RememberUsername(string username, HttpContext httpContext)
 {
     try
     {
         WebUtils.CheckHttpContext(httpContext, true);
         HttpCookie cookie = CreateCookie(username, null);
         httpContext.Response.Cookies.Set(cookie);
     }
     catch (Exception ex)
     {
         log.WriteException(ex, Localization.UseRussian ?
                            "Ошибка при сохранении имени пользователя в cookies" :
                            "Error saving username to the cookies");
     }
 }
示例#2
0
 /// <summary>
 /// Запомнить, что пользователь вошёл в систему
 /// </summary>
 public void RememberUser(string username, HttpContext httpContext)
 {
     try
     {
         WebUtils.CheckHttpContext(httpContext, true);
         Credentials cred   = CreateCredentials(username);
         HttpCookie  cookie = CreateCookie(username, cred);
         httpContext.Response.Cookies.Set(cookie);
     }
     catch (Exception ex)
     {
         log.WriteException(ex, Localization.UseRussian ?
                            "Ошибка при сохранении информации о входе пользователя {0}" :
                            "Error saving login information of the user {0}", username);
     }
 }
示例#3
0
 /// <summary>
 /// Извлечь имя пользователя из cookies
 /// </summary>
 public string RestoreUsername(HttpContext httpContext)
 {
     try
     {
         WebUtils.CheckHttpContext(httpContext, true);
         HttpCookie cookie = httpContext.Request.Cookies["User"];
         return(cookie != null && cookie.HasKeys ? (cookie.Values["Username"] ?? "") : "");
     }
     catch (Exception ex)
     {
         log.WriteException(ex, Localization.UseRussian ?
                            "Ошибка при извлечении имени пользователя из cookies" :
                            "Error restoring username from the cookies");
         return("");
     }
 }
示例#4
0
        /// <summary>
        /// Проверить, что пользователю, данные которого записаны в cookies, разрешён вход в систему
        /// </summary>
        public bool ValidateUser(HttpContext httpContext, out string username, out string alert)
        {
            username = "";
            alert    = "";

            try
            {
                WebUtils.CheckHttpContext(httpContext, true);
                HttpCookie reqCookie = httpContext.Request.Cookies["User"];

                if (reqCookie != null && reqCookie.HasKeys)
                {
                    username = reqCookie.Values["Username"] ?? "";
                    Credentials cred = new Credentials(
                        reqCookie.Values["BrowserID"], reqCookie.Values["OneTimePassword"], DateTime.MinValue);
                    Credentials newCred;

                    if (username != "" && ValidateUser(username, cred, out newCred, out alert))
                    {
                        HttpCookie respCookie = CreateCookie(username, newCred);
                        httpContext.Response.Cookies.Set(respCookie);
                        return(true);
                    }
                    else
                    {
                        HttpCookie respCookie = CreateCookie(username, null);
                        httpContext.Response.Cookies.Set(respCookie);
                        return(false);
                    }
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                log.WriteException(ex, Localization.UseRussian ?
                                   "Ошибка при проверке входа пользователя {0}" :
                                   "Error validating login of the user {0}", username);
                return(false);
            }
        }
示例#5
0
        /// <summary>
        /// Полностью удалить информацию о входах пользователя на стороне сервера и из cookies
        /// </summary>
        public void CompletelyForgetUser(string username, HttpContext httpContext)
        {
            try
            {
                WebUtils.CheckHttpContext(httpContext, true);
                HttpCookie respCookie = CreateCookie("", null);
                httpContext.Response.Cookies.Set(respCookie);

                lock (fileLock)
                {
                    File.Delete(GetCredentialsFileName(username));
                }
            }
            catch (Exception ex)
            {
                log.WriteException(ex, Localization.UseRussian ?
                                   "Ошибка при полном удалении информации о входах пользователя {0}" :
                                   "Error completely deleting login information of the user {0}", username);
            }
        }
示例#6
0
        /// <summary>
        /// Удалить информацию о входе в систему из cookies
        /// </summary>
        public void ForgetUser(HttpContext httpContext)
        {
            try
            {
                WebUtils.CheckHttpContext(httpContext, true);
                HttpCookie reqCookie = httpContext.Request.Cookies["User"];

                if (reqCookie != null && reqCookie.HasKeys)
                {
                    string     username   = reqCookie.Values["Username"] ?? "";
                    HttpCookie respCookie = CreateCookie(username, null);
                    httpContext.Response.Cookies.Set(respCookie);
                }
            }
            catch (Exception ex)
            {
                log.WriteException(ex, Localization.UseRussian ?
                                   "Ошибка при удалении информации о входе пользователя из cookies" :
                                   "Error deleting login information from the cookies");
            }
        }