/// <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"); } }
/// <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); } }
/// <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(""); } }
/// <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); } }
/// <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); } }
/// <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"); } }