Nano Hash - криптовалюты, майнинг, программирование

Переменная сеанса ASP.NET становится нулевой?

Мой обозреватель решений (если помогает): http://i.stack.imgur.com/BdhDz.png

Когда я нажимаю кнопку учетной записи (с ссылкой на account.aspx), она перенаправляет меня на login.aspx, потому что я не авторизован.

на моем login.aspx.cs (после того, как они нажмут войти), у меня есть

Session["hi"] = "hello";
HttpCookie cookie = new HttpCookie("username");
cookie.Value = UName.Text;
Response.Cookies.Add(cookie);
System.Web.Security.FormsAuthentication.RedirectFromLoginPage(UName.Text, false);

на account.aspx.cs у меня есть

if (Session["hi"] != null)
{
    Literal1.Text = Session["hi"].ToString();
    Literal1.Text += "<br><br><br>";
}

Почему ничего не показывает? Я пробовал всевозможные способы отображения этого сеанса, но они не работали, по какой-то причине Session["hi"] имеет значение null.


  • Вы уверены, что account вызывается после обработки кода в login? Можете ли вы поставить точку останова в обоих местах? 17.04.2014
  • Почему вы создаете файл cookie username, если вы используете FormsAuthentication? Разместите содержимое внутри ~/LoggedIn/web.config. 17.04.2014
  • '‹?xml version=1.0?›' ‹configuration› ‹system.web› ‹авторизация› ‹deny users=?/› ‹/authorization› ‹/system.web› ‹/configuration›' 17.04.2014
  • @Mikiku Опубликуйте содержимое <authentication> внутри ~/web.config 17.04.2014
  • <allow users="Role"/> отсутствует? 17.04.2014
  • Кстати, чек на Session["hi"] взорвется в Exception. Вместо этого вы должны использовать if (Session.ContainsKey("hi")) { ... }. 17.04.2014
  • @pid Session["hi"] тоже работает. 17.04.2014
  • @Nanosoft: О, подожди... ты прав! Это надоедливые Dictionary<>, которые не возвращают null для несуществующих ключей. Просто увлекся :) 17.04.2014
  • У меня есть только ‹deny users=?/› в ‹authentication› в веб-конфигурации LoggedIN. 17.04.2014
  • Вы делаете не Session["hi"].ToString(), а (string)Session["hi"] 17.04.2014
  • @async пробовал оба способа, проблема не в этом 17.04.2014
  • @Mikiku Опубликовать содержимое ‹authentication› внутри ~/web.config 17.04.2014
  • @win ‹forms loginUrl=login.aspx›‹/forms› 17.04.2014

Ответы:


1

На основании вашего последнего комментария вам необходимо установить AuthenticationSection Свойство .Mode на mode="Forms".

По умолчанию это оконный режим.

<authentication mode="Forms">
  <forms loginUrl="~/Login.aspx" 
     timeout="2880" 
     cookieless="UseCookies" />
</authentication>

Как создать основной объект

После того, как аутентифицированный пользователь запрашивает страницу, вам необходимо получить билет авторизации из файла cookie и создать объект Principal.

Global.asax.cs

void Application_AuthenticateRequest(object sender, EventArgs e)
{
   HttpCookie decryptedCookie = 
      Context.Request.Cookies[FormsAuthentication.FormsCookieName];

   FormsAuthenticationTicket ticket = 
      FormsAuthentication.Decrypt(decryptedCookie.Value);

   var identity = new GenericIdentity(ticket.Name);
   var principal = new GenericPrincipal(identity, null);

   HttpContext.Current.User = principal;
   Thread.CurrentPrincipal =HttpContext.Current.User;
}

использование

if (User.Identity.IsAuthenticated)
{

}
17.04.2014
  • но у меня есть ‹режим аутентификации=Forms› ‹forms loginUrl=login.aspx›‹/forms› ‹/authentication› 17.04.2014
  • Похоже, вы не создаете объект IPrincipal в AuthenticateRequest. Я обновил свой ответ. 17.04.2014
  • эхх, тяжеловато для моего первого задания в жизни ;d Спасибо 17.04.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..