Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
MsGuns
539 / 539 / 57
Регистрация: 04.04.2011
Сообщений: 2,014
1

Как сделать доступными для всех страниц некоторые данные пользователя?

15.03.2017, 15:41. Просмотров 278. Ответов 6
Метки нет (Все метки)

Здравствуйте !
Вопрос примитивный, наверное, но бьюсь уже неделю
Есть простенькая форма входа, на которой выполняется авторизация. После ввода логина и пароля выполняется поиск в БД MS SQL Server. Если есть такая запись (пользователь зарегистрирован), то выполняется переход на главную страницу сайта.
Вся логика сайта строится на некоторых данных вошедшего пользователя (права на контент, статус и т.д.).
Но каким образом в коде страницы входа запомнить полученные на сервере данные для того, чтобы потом их использовать в логике других страниц ?

Проект создавался как WebForms (пустая).
MemberSheep и прочие стандартные "плюшки" исключаются (пока, во всяком случае). Т.е. все надо сделать простейшим способом.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2017, 15:41
Ответы с готовыми решениями:

Как сделать параметры приложения доступными для всех пользователей сервера
Всем привет. Подскажите как сделать параметры приложения доступными для всех пользователей...

Как сделать для главной один header а для всех остальных страниц другой
Здравствуйте. Хочу чтоб на главной странице в header было изображение, но на всех остальных его...

Как сделать код меню единым для всех страниц?
Всем привет. Кто может помочь. Ищу такой скрипт или просто совета. Если такая тема есть, прошу...

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

Как сделать доступными для изменения свойства RuntimeBroker в ComponentServices?
Как сделать доступными для изменения свойства RuntimeBroker в ComponentServices?

6
IamRain
1540 / 1292 / 406
Регистрация: 02.08.2011
Сообщений: 3,815
15.03.2017, 16:16 2
Если вы не хотите доставать данные пользователя из БД на нужных страницах, то, как вариант, можно держать их в сессии.
0
OwenGlendower
Супер-модератор
Эксперт .NET
10749 / 9177 / 3911
Регистрация: 17.03.2014
Сообщений: 18,361
Записей в блоге: 1
Завершенные тесты: 2
15.03.2017, 16:36 3
MsGuns, если самым простейшим, то сохраняй объект в сессию
0
MsGuns
539 / 539 / 57
Регистрация: 04.04.2011
Сообщений: 2,014
15.03.2017, 18:42  [ТС] 4
Цитата Сообщение от OwenGlendower Посмотреть сообщение
MsGuns, если самым простейшим, то сохраняй объект в сессию
Если не затруднит, можно малюсенький пример с кодом. Заодно что такое объект User и как им пользоваться ?

Добавлено через 1 час 37 минут
Вот тут:


Страшно раскритикован "простейший" способ использования Session (InProc). Но где же альтернатива ?
0
Usaga
Эксперт .NET
5855 / 4118 / 728
Регистрация: 21.01.2016
Сообщений: 16,083
Завершенные тесты: 2
15.03.2017, 19:08 5
Цитата Сообщение от MsGuns Посмотреть сообщение
Страшно раскритикован "простейший" способ использования Session (InProc).
Я тоже категорически против использования сессии для этих целей. Лучше использовать кеш с малым временем жизни.

Мы на работе на каждый запрос от пользователя лезем в БД и восстанавливаем его Identity-сущность с некоторым минимум информации. Страшного ничего не происходит. Подобные запросы достаточно быстры (мы вытаскиваем всего несколько полей типа логина, ID и ещё по мелочи). И даже не кешируем, хотя надо бы, но в наших приложениях пользователей не так уж и много.

Ваш случай нужно отдельно изучать. Если пользователей дофига и запросов дофига, то нужно меры принимать. Если нагрузна не велика, то париться не стоит.
0
MsGuns
539 / 539 / 57
Регистрация: 04.04.2011
Сообщений: 2,014
15.03.2017, 23:00  [ТС] 6
Usaga,
С сервера при авторизации берутся несколько значений простых типов string, int, datetime. Они-то и используются в логике построения страниц. Пользователей будет несколько десятков, ну может быть, сотен,- сайт не предназначен для "широкого" пользования. Да, есть еще угрозы взлома, атак и прочее. Но всякие оптимизации и защиты будут предусмотрены только после того, как проект "пойдет". А пока нужно сделать что-то типа демо, чтобы убедить "инвестора" в привлекательности и полезности.

В принципе я нашел решение, которое состоит просто в использовании объекта Session, доступного из любой страницы проекта. Может и криво, неоптимально и т.д., но это работает и на данном этапе вполне пойдет.

Тему можно закрывать

Добавлено через 11 минут
Цитата Сообщение от IamRain Посмотреть сообщение
Если вы не хотите доставать данные пользователя из БД на нужных страницах, то, как вариант, можно держать их в сессии.
Хочу ! Но вопрос в том, как мне узнать на "нестартовой" странице "B" логин и пароль (которые вводились на стартовой странице "A", откуда и вызывалась "B"), по которым надо искать данные пользователя на сервере ? Использовать Request.Redirect на нужную страницу с параметрами логин-пароль, а уже в вызванной странице парсить полученный Request.QueryString адрес-строку ? И чем это лучше в условиях низких и средних загрузок сервера ?
0
Usaga
Эксперт .NET
5855 / 4118 / 728
Регистрация: 21.01.2016
Сообщений: 16,083
Завершенные тесты: 2
16.03.2017, 05:11 7
MsGuns, вот теперь, кажется, я понял чего вы хотите Вам нужно почитать про аутентификацию в asp.net mvc. В процессе чтения выяснится, что при аутентификации можно сохранять в куки id пользователя (или любую другую информацию) и на каждом аутентифицированном запросе, выгребать из бд по этому id любую информацию о пользователе.

Можно делать это в global.asax и сохранять это дело в контексте пользователя, примерно так. Это будет происходить на каждом запросе, но прозрачно для каждого контроллера/страницы вашего приложения.

Именно такой подход мы на работе постоянно и используем. Просто и удобно.
1
16.03.2017, 05:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2017, 05:11

Как сделать, чтобы нумерация была для всех страниц, кроме 1 и 2? Очень нужно!
Как сделать, чтобы нумерация была для всех страниц, кроме 1 и 2? Очень нужно! Очень срочно!...

Как сделать доступными только для чтения названия листов книги
Excel. Как сделать доступными только для чтения названия листов книги, заранее определенные...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru