Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разграничение прав 
:(
    Опции темы
D_EMO_N
Дата 3.1.2008, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 20.11.2007

Репутация: нет
Всего: нет



Подскажите как на сайт при добавить проверку пользователя при загрузке каждойстраницы?
Суть проблемы заключается в том что есть некая БД, зависимая от сайта. Когда пользователь логинится его проверяют на тот какие у него права, потом ему видны соответсвующие разделы сайта. Но разделы при отображении в строке адреса прописываются с соотв ID, и если пользователь просто поменяет ID в стране адреса то он увидит аналогичную страницу но с другим содержимым. я так понял, что страница заполняется данными в соотв с тем какой ИД стоит в адресе. Но при этом пользователь может производить все манипуляции с этой страницей так, как будто он залогинился с соотв. полномочиями.

ЗЫ. Всех поздравляю с Новым Годом, всем всего наилучшего, успехов и карьерного роста.
PM MAIL   Вверх
Mymik
Дата 4.1.2008, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Предлагаю поставить в Application_BeginRequest проверку на полномочия пользователя. Т.е. поставить там проверку, мол если пользователь залогинен, то проверять из какой он страны и если страна не совпадает с адресной строкой, то кидать его на специальную страницу типа "YouStupidHacker.aspx"  с текстом "Простите, вы из другой страны" smile


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
D_EMO_N
Дата 4.1.2008, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 20.11.2007

Репутация: нет
Всего: нет



Вопрос решил, почитав немного и поспрашивав. И я вопрос не корректно задал:
Есть БД с организациями(можно и странами), организации имеют иерархическую структуру, есть пользователи которые могут иметь доступ только к этой организации(если она является самой низжей в дереве организаций) или к этой и её потомкам.
Мое решение выглядит следующим образом: залогинившийся пользователь принадлежит к какой-то орг., эта орг. имеет левый и правый индекс, соотв индекс её детей будет находиться в промежутке между левым и правым индексом этой орг. Т.е. при запросе пользователя отобразить страницу (просто в адресе поменял цифру) будет проверять можно ли отобразить или нет. 

А вот где можно почитать как это сделать?
Как определяется пользователь я не знаю так как сайт без *.cs файлов, ои все в dll скомпилены.
PM MAIL   Вверх
Mymik
Дата 4.1.2008, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Если все в Dll то уже никак :(... ну точнее открываешь reflector открываешь им dll и смотришь исходный код smile. А дальше copy/past с доработкой кода.
А можешь унаследоваться от нужного тебе класса, переопределить немного Page_Load (ихний код из рефлектора, плюс свой дописать)

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


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
D_EMO_N
Дата 4.1.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 20.11.2007

Репутация: нет
Всего: нет



за Reflector спасибо.
По поводу проверки - где узнать как это делается? Я только начинаю программированием заниматься.
Ну вот благодаря рефлектору у меня есть доступ к исходным кодам, а где там узнать как проверяется пользователь?

Код

        <authentication mode="Forms">
            <forms loginUrl="Login.aspx"/>
        </authentication>

из web.config

Код

        protected void Page_Load(object sender, System.EventArgs e)
        {
            if (Request.IsAuthenticated)
                Response.Redirect("~/Default.aspx");
            // Put user code to initialize the page here
        }

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
        
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {    

        }
        #endregion

        


        protected void btnSignIn_Click(object sender, System.EventArgs e)
        {
            if (Page.IsValid) 
            {
                if (SecUser.Authenticate(txtUsername.Text, txtPassword.Text))
                    FormsAuthentication.RedirectFromLoginPage( txtUsername.Text, chkRemember.Checked );
                else
                    lblError.Text = "Invalid username or password";
            }
        
        }

код из файла логина, но про то как именно сопоставляет пароль\логин пользователя с БД не нашел... но в БД есть этот пользователь, приписанный к орг. как вытащить эту строчку? 
что-то наподобие выбор этого параметра где пользователь=@текущий, вот как определить текущего?

Это сообщение отредактировал(а) D_EMO_N - 4.1.2008, 12:30
PM MAIL   Вверх
Mymik
Дата 4.1.2008, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



текущий пользователь храниться в 
Код

HttpContext.Current.User.Identity.Name

А вообще, скорее всего там используется membership... его можно найти в web.config там он одноименной сексии указывается где хранится этот провайдер. Ну а дальше опять лазь и смотри. НО. Это не дело переписывать такую громоздкую систему. Попроси чтобы тебе дали исходный код, либо напиши свой провайдер.

Цитата(D_EMO_N @  4.1.2008,  11:47 Найти цитируемый пост)
Я только начинаю программированием заниматься.

сложно тебе прийдется :(


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
tol05
Дата 4.1.2008, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 34
Всего: 170



D_EMO_N
Цитата(D_EMO_N @  4.1.2008,  10:47 Найти цитируемый пост)
о про то как именно сопоставляет пароль\логин пользователя с БД не нашел...

у тебя есть строка 
Код

if (SecUser.Authenticate(txtUsername.Text, txtPassword.Text)) FormsAuthentication.RedirectFromLoginPage( txtUsername.Text, chkRemember.Checked );
перевожу на русский: "Если функция Authenticate() класса SecUser скажет, что юзер с именем из txtUsername.Text и паролем из txtPassword.Text аутентифицирован, то перенаправить его с логин-страницы на ту, что он просит". При этом имя юзера и флаг (делать кук или нет, т.е. Remember или не Remember) передать в FormsAuthentication.RedirectFromLoginPage... Читай про нее в msdn.

функция Authenticate() класса SecUser скорее всего и лезет в базу за информацией. Копай ее рефлектором.


Цитата(Mymik @  4.1.2008,  20:23 Найти цитируемый пост)

Цитата(D_EMO_N @  4.1.2008,  11:47 Найти цитируемый пост)
Я только начинаю программированием заниматься.

сложно тебе прийдется :( 


мда... не то слово.



--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.1089 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.