Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ASP > Разграничение прав доступа на ASP


Автор: BlackHawk 17.1.2006, 12:25
Приветствую все светлые головы этого, на мой взгляд, самого профессионального форума!

Подскажите чайнику, как можно, и можно ли вообще ограничить права доступа к части материалов сайта путем считывания логина из локального профиля?

Есть скрипт, который, как я понял, считывает логин из профиля, сверяет его с имеющимся в базе (проверяет наличие пользователя в системе), и если пользователь есть - дает доступ ко всему сайту, а если нет, предлагает послать запрос администратору на внесение в базу....
Тут так: либо есть доступ ко всему сайту, либо его нет вообще.

Задача состоит в том, чтобы автоматически по логину (из профиля) определять ту группу пользователей, которым будет доступна вся информация, а всем остальным (по умолчанию) только разрешенная часть.

Код


<% 
    DomainUser = Request.ServerVariables("LOGON_USER") 'MyDomain\SUMIN
    if DomainUser = "" then
        Session("UserID") = ""
    else
        DomainUser = Replace(DomainUser,"\","/")
        i = InStr(1, DomainUser, "/")
        Domain = Left(DomainUser, i-1)
        UserName = Mid(DomainUser, i+1)
        Set Conn = Server.CreateObject("ADODB.Connection")
        Conn.Open Application("ConnectionString")
        sql = "SELECT Users.ID as UserID, FirstName_rus, LastName_rus, Head_ID, Department_ID, Office_ID, Users.City_ID, Phone_internal, Users.Email, Phones, WT_ID, Account, Users.Name FROM Users, Offices WHERE Users.Office_ID = Offices.ID and Account like '" & UserName & "'"
        Set rst = Conn.Execute(sql)
'        if rst.recordcount < 1 then
'            Session("UserID") = ""
'        else
            Do while not rst.eof
                Session("UserID") = rst("userid")
                Session("UserAccount") = rst("Account")
                Session("UserName_rus") = rst("lastname_rus") + " " + rst("firstname_rus")
                Session("username") = rst("name")
                Session("Head_ID") = rst("head_id")
                Session("Department_ID") = rst("department_id")
                Session("Office_ID") = rst("office_id")
                Session("City_ID") = rst("city_id")
                Session("Phone_in") = rst("phone_internal")
                Session("User_Email") = rst("Email")
                Session("Office_phones") = rst("phones")
                Session("WT_ID") = rst("wt_id")
                rst.MoveNext
            Loop
'        end if
    end if
' Если пользователь не авторизован, отправим письмо
'    if Session("UserID") = "" then
'        Dim myMail 
'        Set myMail = CreateObject("CDONTS.NewMail") 
'        myMail.From = "[email protected]
'        myMail.To = Application("Admin") 
'        myMail.Subject = "Unknown user" 
'        myMail.Body = "There is unknown user on the page # " & session("page") & " of the Intranet site: " & DomainUser
'        myMail.Send
'        Set myMail = Nothing 
'    end if
    Conn.Close
    Set RS = nothing
%>



Автор: bars_uz 25.2.2006, 11:10
Ya delayu tak

Код

<%IF rsUser("Status") = "admin" THEN%>
<!--#include file="admin.asp"-->
<%ELSE%>
<!--#include file="user.asp"-->
<%END IF%>

Автор: djGri 9.3.2006, 21:27
Можно добавить вначале каждой админовской страницы такую проверку
Код


<%
         if Session("userRole") <> "admin" then
                 response.redirect("error.asp")
         end if
%>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)