Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Ограничение доступа на страницы сайта / 14 сообщений из 14, страница 1 из 1
12.01.2012, 16:04:24
    #37611358
karie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение доступа на страницы сайта
Привет всем! Такая вот есть задачка.
Нужно реализовать ограничение доступа на некоторые страницы определенным пользователям. Страницы, к которым нужно обеспечит ограниченный доступ находятся в отдельной папке, в т. Default.aspx, с которой осуществляется переход на другие "закрытые страницы".
В web.config приложения настраиваю
Код: vbnet
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


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
<system.web>
          <authorization>
           
            <!--<deny users="?"/>-->
             <allow users="demik"/>
            <deny users="*"/>
 
          </authorization>
        </system.web>



На странице Login.aspx по нажатию на кнопку

Код: vbnet
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


Ребята, плиз, подскажите, что я делаю неправильно, в чем ошибка, может как то по-другому вообще это нужно делать?
...
Рейтинг: 0 / 0
12.01.2012, 16:38:07
    #37611427
karie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение доступа на страницы сайта
причем не работает именно allow и deny в web.config, т.к. если не ложить закрытые страницы в отдельную папку, а установить ограничение в web.config, то оно не работает и пользователи с ограниченным доступом могут спокойно перейти на "закрытые страницы".
...
Рейтинг: 0 / 0
12.01.2012, 17:10:49
    #37611515
karie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение доступа на страницы сайта
можно конечно, просто на каждой странице при загрузке делать проверку, и в зависимости от этого пропускать юзера или нет....но правильно ли это?
...
Рейтинг: 0 / 0
12.01.2012, 17:23:08
    #37611556
Andrey1306
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение доступа на страницы сайта
<configuration>
<system.web>
<authorization>
<allow roles="Администратор"/>
<deny users="*"/>
</authorization>
</system.web>
</configuration>


это веб конфиг для папки которой имеют доступ только пользователи роли "Администратор"
...
Рейтинг: 0 / 0
12.01.2012, 17:33:58
    #37611598
Andrey1306
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение доступа на страницы сайта
можно собрать пользователей в группы и разрешать доступ к страницам только этим группам , остальных не пущать. А то поюзерно как то совсем тоскливо будет.
...
Рейтинг: 0 / 0
12.01.2012, 17:50:33
    #37611638
karie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение доступа на страницы сайта
А как их собрать в группы? на данном этапе добавление пользователей идет напрямую в базе данных.
...
Рейтинг: 0 / 0
12.01.2012, 17:53:16
    #37611643
Andrey1306
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение доступа на страницы сайта
ну в базе данных и собирайте. А вообще посмотрите в сторону Membership + RoleProvider
...
Рейтинг: 0 / 0
12.01.2012, 18:00:43
    #37611665
karie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение доступа на страницы сайта
Спасибо)
...
Рейтинг: 0 / 0
12.01.2012, 18:12:21
    #37611694
karie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение доступа на страницы сайта
только вот даже если будет разделение по ролямЮ, будут ли работать ограничения в web.config? вопрос, похоже, все равно, открыт...почему юзеров не пропускает...?
...
Рейтинг: 0 / 0
12.01.2012, 18:30:45
    #37611724
Andrey1306
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение доступа на страницы сайта
karieтолько вот даже если будет разделение по ролямЮ, будут ли работать ограничения в web.config? вопрос, похоже, все равно, открыт...почему юзеров не пропускает...?

Ограничение будет работать.

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

Значит Response.Redirect("Default.aspx", True) не правильный.
...
Рейтинг: 0 / 0
12.01.2012, 19:09:35
    #37611782
karie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение доступа на страницы сайта
я извиняюсь, может я неправильно написала, в случае если заходит юзер с ограниченными праваими на закрытые страницы, то тоже пишет, что ресурс не найден...это значит, что не получается настроить именно ограничение и разрешение к папке в web.config...что тут может быть неправильно?


сейчас временно на закрытых страницах проверка данных из сессии в Page_Load, в зависимости от чего и осуществляется перенаправление юзера с закрытой страницы...работает...но это ведь, наверно, не очень корректно...
...
Рейтинг: 0 / 0
12.01.2012, 19:43:11
    #37611835
Andrey1306
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение доступа на страницы сайта
Проверьте на своих страницах , после авторизации пользователя HttpContext.Current.User.Identity.IsAuthenticated что показывает ?
...
Рейтинг: 0 / 0
13.01.2012, 13:38:24
    #37612935
karie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение доступа на страницы сайта
в дебаге показывает true
...
Рейтинг: 0 / 0
13.01.2012, 14:23:59
    #37613076
Andrey1306
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение доступа на страницы сайта
karieя извиняюсь, может я неправильно написала, в случае если заходит юзер с ограниченными праваими на закрытые страницы, то тоже пишет, что ресурс не найден...это значит, что не получается настроить именно ограничение и разрешение к папке в web.config...что тут может быть неправильно? .

А мне кажется что просто путь не правильно указан, иначе было бы перенаправление на страницу loginUrl="Login.aspx"

А вообще (я кончно могу ошибаться , будут гуру может чего подскажут) мое мнение у вас MemberShip не настроен где в вебконфиге секция такая ?

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
	<membership defaultProvider="MyProvider">
			<providers>
				<clear/>
				<add name="MyProvider" 
					 type="Admin.MyProviderMemberShipProvider"  
					 connectionStringName="ApplicationServices" 
					 enablePasswordRetrieval="false" 
					 enablePasswordReset="true" 
					 requiresQuestionAndAnswer="false" 
					 requiresUniqueEmail="false" 
					 maxInvalidPasswordAttempts="5" 
					 minRequiredPasswordLength="6" 
					 minRequiredNonalphanumericCharacters="0" 
					 passwordAttemptWindow="10" applicationName="/"/>
				
			</providers>
		</membership>




Судя по этому
Код: c#
1.
 Dim strtmp As String = ValidateUser(ed_Login.Value, ed_Pass.Value)

Вам надо свой писать
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Ограничение доступа на страницы сайта / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]