Форум программистов, компьютерный форум, киберфорум
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 4

Нужно реализовать ограничение доступа на некоторые страницы определенным пользователям

12.01.2012, 17:11. Показов 3844. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем! Такая вот есть задачка.
Нужно реализовать ограничение доступа на некоторые страницы определенным пользователям. Страницы, к которым нужно обеспечит ограниченный доступ находятся в отдельной папке, в т. Default.aspx, с которой осуществляется переход на другие "закрытые страницы".
В web.config приложения настраиваю

XML
1
2
3
4
5
6
7
<authorization>
    <allow users="*"/>
      <deny users="?"/>
    </authorization>
<authentication mode="Forms">
            <forms name=".ASPXFORMSLOG" loginUrl="Login.aspx" protection="All" path="/" timeout="30"/>
        </authentication>
Во вложенной папке с закрытыми страницами еще один web.config

XML
1
2
3
4
5
6
7
8
9
 <system.web>
          <authorization>
           
            <!--<deny users="?"/>-->
             <allow users="demik"/>
            <deny users="*"/>
 
          </authorization>
        </system.web>
На странице Login.aspx по нажатию на кнопку

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Protected Sub bt_Login_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt_Login.Click
        Dim strtmp As String = ValidateUser(ed_Login.Value, ed_Pass.Value)
        If strtmp <> "" Then
            Dim tkt As FormsAuthenticationTicket
            Dim cookiestr As String
            Dim ck As HttpCookie
            Session.Timeout = 30000
            Session.Item("URole") = strtmp.Substring(0, 4).Trim
            Session.Item("UID") = strtmp.Substring(4, 4).Trim
            Session.Item("UName") = strtmp.Substring(8, strtmp.Length - 8).Trim
 
            Try
 
                Dim conn As SqlConnection
                Dim cmd As SqlCommand
                conn = New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("saleit_db_supportConnectionString").ConnectionString)
                conn.Open()
                cmd = New SqlCommand("INSERT INTO tbl_WebLogs(UserID,theDate,WebPage) VALUES(@UserID,GetDate(),@WebPage)", conn)
                cmd.Parameters.Add("@WebPage", Data.SqlDbType.VarChar, 50)
                cmd.Parameters("@WebPage").Value = "Login.aspx"
                cmd.Parameters.Add("@UserID", Data.SqlDbType.VarChar, 15)
                cmd.Parameters("@UserID").Value = Session.Item("UID")
                cmd.ExecuteScalar()
                cmd.Dispose()
                conn.Dispose()
            Catch ex As Exception
            End Try
 
            tkt = New FormsAuthenticationTicket(1, Session.Item("UName"), DateTime.Now(), DateTime.Now.AddMinutes(30000), False, Session.Item("URole"))
            cookiestr = FormsAuthentication.Encrypt(tkt)
            ck = New HttpCookie(FormsAuthentication.FormsCookieName(), cookiestr)
            ck.Path = FormsAuthentication.FormsCookiePath()
            Response.Cookies.Add(ck)
 
 
 
            If Session.Item("URole") = 3 Then
                Response.Redirect("SummaryForDanone.aspx", True)
 
            Else
                'Dim strRedirect As String = Request("ReturnUrl")
                'If (strRedirect Is Nothing) Then
                '    Response.Redirect("Default.aspx", True)
                '    'Response.Redirect("Profile.aspx?clid=0", True)
                'Else
                '    Response.Redirect("Default.aspx", True)
                '    'Response.Redirect("Profile.aspx?clid=0", True)
                '    'Response.Redirect(strRedirect, True)
                'End If
                Response.Redirect("Default.aspx", True)
            End If
 
        Else
            Response.Redirect("login.aspx", True)
        End If
 
 
    End Sub
Нужно чтобы пользователь demik(у него Session.Item("URole") <> 3) со страницы логин перенаправлялся на Default.aspx, а пользователи у которых Session.Item("URole") = 3 перенаправлялись на страницу SummaryForDanone.aspx, при этом, если они через адресную строку попытаются перейти на страницу Default.aspx или другие закрытые страницы, доступ будет запрещен.

А получается, что польователи, у которых Session.Item("URole") = 3 переходят на нужную страницу, а на запрещенные перейти не могут..А вот при входе "demik" вываливает ошибка

Не удалось найти данный ресурс.
Описание: HTTP 404. Возможно, искомый ресурс (или один из зависимых от него компонентов) удален, получил другое имя или временно недоступен. Просмотрите следующий URL-адрес и проверьте, что он введен правильно.

Запрошенный URL: /SupporttrueVersion7.0 - копия (2)/Default.aspx


Ребята, плиз, подскажите, что я делаю неправильно, в чем ошибка, может как то по-другому вообще это нужно делать?

Добавлено через 36 минут
причем не работает именно allow и deny в web.config, т.к. если не ложить закрытые страницы в отдельную папку, а установить ограничение в web.config, то оно не работает и пользователи с ограниченным доступом могут спокойно перейти на "закрытые страницы".

Добавлено через 1 минуту
причем не работает именно allow и deny в web.config, т.к. если не ложить закрытые страницы в отдельную папку, а установить ограничение в web.config, то оно не работает и пользователи с ограниченным доступом могут спокойно перейти на "закрытые страницы".

Добавлено через 32 минуты
можно конечно, просто на каждой странице при загрузке делать проверку, и в зависимости от этого пропускать юзера или нет....но правильно ли это?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.01.2012, 17:11
Ответы с готовыми решениями:

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

Ограничение доступа на сайт незарегистрированным пользователям.
Всем привет. Надо ограничить доступ незарегистрированным пользователям на определенные страницы сайта. Кто с этим сталкивался, скажите...

Ограничение доступа к диску пользователям компьютера
Я нечайно ограничил доступ к диску пользователям компютера..... А дело в том, то я и есть пользователь, хоть и администратор.... И теперь у...

3
 Аватар для karpov.
30 / 30 / 4
Регистрация: 04.01.2012
Сообщений: 135
12.01.2012, 18:32
Если таких пользователей будет мало, то можно сделать просто как-то так:
C#
1
2
if (Page.User.Identity.Name != "admin")
            Response.Redirect("~/login.aspx");
0
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 4
12.01.2012, 18:59  [ТС]
Я на закрытых страницах в Page_Load теперь проверяю данные из сессии, в котороу у меня записан URole...как то то так

VB.NET
1
2
3
4
5
6
7
If Session.Item("URole") = 3 Then
 
            Response.Redirect("SummaryForDanone.aspx", True)
 
        Else
            Return
        End If
работает...но хотелось бы как то более правильно сделать..
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
12.01.2012, 20:13
Вообще есть стандартные механизмы, если не юзать Membership, то роли прописываются в вебконфиге , текущий пользователь - Page.User.Identity, проверка роли через RoleManager, в общем вот:
http://msdn.microsoft.com/ru-r... 50zwb.aspx
Для каждого каталога можно настроить свой web.config, где указать нужные атрибуты безопасности и роли, остальное сделает asp net.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.01.2012, 20:13
Помогаю со студенческими работами здесь

Ограничение доступа в мир некоторым пользователям
Здравствуйте. Есть задача дать доступ в интернет определённому списку пользователей из AD, а остальным запретить. В системе поднят:...

Ограничение Доступа К Базам Сервера Нескольким Пользователям
Есть сервер домино А, к которому подкючаются с внешки несколько организаций, куча юзеров, анонимный доступ есть. Надо сделать белый...

Ограничение скорости доступа в интернет\к определенным сайтам
Добрый день! Я начинающий системный администратор; Помогите пожалуйста разобраться в вопросе (литературой, перевернул учебник Windows...

Задача по наследованию в C++, нужно реализовать некоторые моменты
Написать программу с объектами и реализовать наследование. Ситуация: Klimat (базовый объект), Derevo (выводной объект). a. Klimat:...

Открыть общий доступ к папке определенным пользователям
Как можно открыть общий доступ к папке не всем, а определенным пользователям? Например по IP. Сейчас у меня открыто для всех.


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru