2012-05-08 2 views
0

У меня есть собственный журнал, который возвращает зашифрованный токен, который указывает, что пользователь вошел в систему. Этот токен передается на другую страницу (Dash.aspx) через QueryString.Как обрабатывать пользовательский токен по страницам

Dash.aspx берет токен из QueryString и отправляет его в скрытое поле на странице. Javascript считывает это значение и удерживает его в памяти. Этот токен затем используется для совершения вызовов веб-службы. Когда эти вызовы завершают новое значение Token, и javascript сохраняет это значение (заменяя старый).

Я хочу добавить новые страницы для доступа после входа в систему. Этим страницам понадобится действительный токен, переданный им. Пользователь переместится с Dash.aspx на одну из этих новых страниц и обратно (так что всего несколько ссылок в верхней части главной страницы)

Мне не нравится передавать токен через QueryString. И я не уверен, как обновить токен, если он доступен на странице. Я хочу, чтобы избежать использования сеанса для хранения и передачи токена, если это возможно

Как я могу передать свой токен более незаметно и убедиться, что он всегда соответствует самому последнему значению?

Я понимаю, что это довольно широкий вопрос, но я не в порядке. Я чувствую, что есть, вероятно, какая-то предварительно построенная идея, которая справится с этим, я просто не знаю, что и как ее использовать.

Благодаря

Update

Так пример попросили:

Шаг 1: журналы пользователей в -> zholen/zholen123

  • служба призвана подтвердить имя пользователя и пароль -> возвращает токен ('ABC')
  • Перенаправление на страницу Da sh.aspx маркер = ABC

Шаг 2: Dash.aspx захватывает маркер из строки запроса и присваивает скрытое поле на странице

  • объекты JavaScript грейферов фишку из скрытого поля и сохраняет внутренне
  • JS Объект делает несколько асинхронных вызовов на различные услуги, каждый сервис возвращает новый обновленный токен, внутренний маркер обновляется с новым значением (токены истекает через каждые 30 мин)

Нужные новые шаги

Шаг 3: Перемещение из Dash.aspx в Account.aspx

  • Account.aspx требует действительный токен для загрузки
  • вызовов больше услуг и изменить токен

Шаг 4: Перейдите со счета в тире.ASPX с до даты лексем


вызовы Обслуживание производится либо с помощью веб-службы (ASMX) или с помощью методов страницы в зависимости, хочет ли действие возврат данных (ASMX) или HTML возврата (страничный метод -> таблица предварительно заполненные данными) или на странице загрузки

Основываясь на предложении куки, я думаю, можно было бы сбросить куки с новым лексем значением во время этих вызовов на C# конец, если предположить, что я мог бы сделать что-то вещь из ASMX и что асинхронность всего этого не вызовет проблем.

Также я могу сделать объект JS, который внутренне сохраняет обновленное место токена, возвращающее значение в скрытое поле, если это поможет сделать его доступным с конца C#.

+0

Я не могу понять, в чем вы нуждаетесь. Можно объяснить это примером? Что-то вроде «Вход в систему пользователя, он перенаправляется на новую страницу с токеном в строке запроса, затем он нажимает ... и ... javascript вызывает веб-сервис и ...)» – JotaBe

+1

Идея файлов cookie хороша , но вы не можете установить их из .asxm WS, вызванного из javascript. Значение скрытого поля будет потеряно, если пользователь изменит с одной страницы на другую с помощью ссылки или введите URL-адрес, чтобы вы могли отказаться от этой опции. Используете ли вы этот токен, чтобы поддерживать сеанс в течение 30 минут? если да, почему бы не использовать обычный сеанс ASP.NET? Ответ решает проблему с C# проблемы, но не со стороны javascript. Вы должны установить cookie с javascript, совместимым со всеми ожидаемыми браузерами. – JotaBe

ответ

1

Вы можете использовать файлы cookie ... Вы можете использовать промежуточное шифрование, поскольку файлы cookie могут быть прочитаны извне.

 //c# 

     HttpCookie cookie = new HttpCookie("myTokenCookie"); 
     cookie.Value = tokenString; 
     Response.SetCookie(cookie); 

     // then get it back later 
     s = Request.Cookies["myTokenCookie"].Value; 

     // then you could write it into a hidden input for retrieval in JS 
+0

хотя это не так ясно в OP, это lloks, как javascript вызывает службу, и cookie должен быть изменен в этот момент. Как бы вы справились с изменением cookie на стороне клиента? – JotaBe

+0

Вы можете установить файлы cookie в javascript тоже, хотя код немного более подробный. – FlavorScape

+0

Чтобы разместить javascript, изменяя cookie: поскольку это веб-сайт ASP, кажется, что если я поместил скрытое поле на странице с asp-значением (<% TOKEN %>), то, если я обновлю это значение с помощью javascript, я могу получить доступ к обновленному токену сзади. – Zholen

Смежные вопросы