Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

biakelly

controle de acesso

Recommended Posts

Oi,

 

Preciso de ajuda com meu código.

 

Estou precisando colocar um controle de acesso ao sistema. Exemplo: se um usuário estiver com acesso: "USER" ele acessa a página, mas se ele estiver com acesso "USER-N" ele é direcionado a outra página.

 

Os dados que uso na minha tabela:

Usuário

Senha

Nível de acesso

 

 

Para restringir o acesso sem login estou fazendo assim e esta funcionando belezinha mas queria restringir no login também

<%
' *** Restrict Access To Page: Grant or deny access to this page
MM_authorizedUsers=""
MM_authFailedURL="login.asp#pricing"
MM_grantAccess=false
If Session("MM_Username") <> "" Then
  If (true Or CStr(Session("MM_UserAuthorization"))="") Or _
         (InStr(1,MM_authorizedUsers,Session("MM_UserAuthorization"))>=1) Then
    MM_grantAccess = true
  End If
End If
If Not MM_grantAccess Then
Response.Cookies("DUportalUser").Expires = Date - 300
  MM_qsChar = "?"
  If (InStr(1,MM_authFailedURL,"?") >= 1) Then MM_qsChar = "&"
  MM_referrer = Request.ServerVariables("URL")
  if (Len(Request.QueryString()) > 0) Then MM_referrer = MM_referrer & "?" & Request.QueryString()
  MM_authFailedURL = MM_authFailedURL & MM_qsChar & "accessdenied=" & Server.URLEncode(MM_referrer)
  Response.Redirect(MM_authFailedURL)
End If
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

No meu sistema eu fiz o seguinte! Criei a tabela de usuários, módulos e acessos.

 

Assim que eu cadastro o usuário na tabela de acessos é incluído todos os id's dos módulos para o id daquele usuário cadastrado.

 

Sendo assim na tabela de acessos tem a coluna com o nome valor. Se o valor for igual a 1 a pessoa tem acesso aquele modulo, se for 0 a pessoa não tem acesso.

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faço da seguinte forma quando eu estou cadastrando um usuário.

<%
	set rs = conn.execute("insert into usuarios (nome,nomeexibicao,login,email,senha,status,situacao,id_rede,id_loja,dataregistro)values('"&request.Form("nome")&"','"&request.Form("nomeexibicao")&"','"&request.Form("login")&"','"&request.Form("email")&"','"&MD5(request.Form("senha"))&"',1,'"&request.Form("situacao")&"','"&request.form("redea")&"','"&request.Form("loja")&"','"&mask_data(Date)&"')")


	'INSERE OS MODULOS.
	dim arrayuserB()
	set rs2 = conn.execute("select * from modulos")
	'aqui recupero a coluna com os dados que eu preciso.
	ct = 0
	while not rs2.eof
	redim preserve arrayuserB(ct)
	ct = ct + 1
	'aqui eu faço o insert na tabela de acessos com todos os modulos para o o usuario cadastrado
	set insert = conn.execute("insert into acessos (login,idmodulo,valor,status,visivel,dataregistro,ultimaatualizacao)values('"&request.Form("login")&"','"&rs2("id")&"','0','1','0','"&mask_data(Date)&"','"&mask_data(Date)&"')")
	rs2.movenext
	wend
	rs2.close
	set rs2 = nothing
%>

Lembrando que a tabela MODULOS tem que existir e estar com dados.

 

E se for um modulo que eu estiver cadastrando eu faço o processo inverso, faço o insert olhando a tabela de usuários, cadastro todos os usuários na tabela de acessos com o novo modulo criado.

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi,

 

Preciso mesmo de ajuda sobre este tema. Bem, fazendo uma pesquisa, cheguei neste modelo:

<%
' *** Validate request to log in to this site.
MM_LoginAction = Request.ServerVariables("URL")
If Request.QueryString<>"" Then MM_LoginAction = MM_LoginAction + "?" + Request.QueryString
MM_valUsername=CStr(Request.Form("id"))

If MM_valUsername <> "" Then
  MM_fldUserAuthorization=""
  MM_redirectLoginSuccess="Sucesso.asp"
  MM_redirectLoginFailed="Negado.asp"
  MM_flag="ADODB.Recordset"
  set MM_rsUser = Server.CreateObject(MM_flag)
  MM_rsUser.ActiveConnection = MM_connDUportal_STRING
  MM_rsUser.Source = "SELECT USUARIO, SENHA"
  If MM_fldUserAuthorization <> "" Then MM_rsUser.Source = MM_rsUser.Source & "," & MM_fldUserAuthorization
  MM_rsUser.Source = MM_rsUser.Source & " FROM USERS WHERE USUARIO='" & Replace(MM_valUsername,"'","''") &"' AND SENHA='" & Replace(Request.Form("password"),"'","''") & "'"
  MM_rsUser.CursorType = 0
  MM_rsUser.CursorLocation = 2
  MM_rsUser.LockType = 3
  MM_rsUser.Open
  If Not MM_rsUser.EOF Or Not MM_rsUser.BOF Then 
  
    ' username and password match - this is a valid user
    Session("MM_AdminUser") = MM_valUsername
    If (MM_fldUserAuthorization <> "") Then
      Session("MM_UserAuthorization") = CStr(MM_rsUser.Fields.Item(MM_fldUserAuthorization).Value)
    Else
      Session("MM_UserAuthorization") = ""
    End If
    if CStr(Request.QueryString("accessdenied")) <> "" And true Then
      MM_redirectLoginSuccess = Request.QueryString("accessdenied")
    End If
    MM_rsUser.Close
    Response.Redirect(MM_redirectLoginSuccess)
  End If
  MM_rsUser.Close
  Response.Redirect(MM_redirectLoginFailed)
End If
%>

Bem, como ele funciona:

 

toda vez que um usuário chamado admin loga o sistema abre sem nenhum problema, caso seja um usuário com nome diferente a permissão de entrada é negada.

 

Mas preciso alterar da seguinte maneira:

 

Tenho na tabela de usuários os seguintes campos: USUÁRIO, NOME, SENHA E ACESSO.

 

Na coluna acesso ao realizar o cadastro tenho dois níveis: Administrador ou Usuário.

 

Lógica de funcionamento, sempre que um usuário com acesso de usuário tentar logar o sistema nega a entrada e qualquer usuário que tenha o nível de acesso a administrador loga sem problema.

 

me ajuda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma olhada no fórum que postei um exemplo, chamado Sistema Administrativo, nele tem alguns critérios para níveis de acesso, bem como validação.

 

E aqui um exemplo simples, porém funcional

 

Script onde é possivel controlar as páginas que os usuários podem acessar.

Arquivo config/conexao.asp:

<%dim cnnsub abre_conectarset cnn=server.CreateObject("adodb.connection")'Abrimos uma conexão com o banco de dados - [IMPORTANTE] altere os dados abaixo com as informações de sua base de dadoscnn.Open("DRIVER={MySQL ODBC 3.51 Driver};SERVER=ACRIAR;PORT=3306;DATABASE=ACRIAR;USER=ACRIAR;PASSWORD=ACRIAR;OPTION=3;")end subsub fecha_conectar     cnn.close     Set cnn = nothingend sub%>

A criar a suas configurações de acesso

Arquivo includes/verifica.asp - Está página apenas verifica se o usuário se logou ou não:

<%if session("login") <> true thenresponse.redirect "default.asp"end if%>

Arquivo default.asp:

<form name="login" method="post" action="login.asp"><table width="250" border="0" align="center" cellpadding="4" cellspacing="2"><tr><td width="33%"><div align="right">Usuário:</div></td><td width="67%"><input name="login" type="text" size="20" maxlength="20"></td></tr><tr><td><div align="right">Senha:</div></td><td><input name="senha" type="password" size="11" maxlength="15"> </td></tr><tr><td colspan="2"><center><input name="enviar" type="submit" value="Enviar" border="0"></center></tr></table></form>

Arquivo login.asp:

<!--#include file="config/conexao.asp"--><%call abre_conectarlogin=Request.Form("login")senha=Request.Form("senha")sql = "SELECT * FROM users WHERE login='"&login&"' AND senha='"&senha&"' "set tab = cnn.execute(sql)' Caso os dados não estiverem corretos o usuário é enviado para a entrar.htmif tab.eof thenresponse.write "Login ou Senha inválidos"elseSession("nivel")= tab("nivel")Session("login")=TRUEResponse.Redirect"pagina.asp"end ifcall fecha_conectarset tab = nothing%>

Arquivo membros.asp:

<form action="inserir_membro.asp"  method="post" name="form" onSubmit="return valida_campo()">        <table width="100%" border="0" cellpadding="0" cellspacing="6">          <tr>            <td width="12%" class="titulo1">Nome</td>            <td width="88%"><input name="nome" type="text" class="formulario"></td>          </tr>          <tr>            <td class="titulo1">Email</td>            <td><input name="email" type="text" class="formulario" onBlur="confere()"></td>          </tr>          <tr>            <td class="titulo1">Celular</td>            <td><input name="celular" type="text" class="formulario"></td>          </tr>          <tr>            <td class="titulo1">Login</td>            <td class="titulo1"><input name="login" type="text" class="formulario"> <span class="style1">*</span></td>          </tr>          <tr>            <td class="titulo1">Senha</td>            <td class="titulo1"><input name="senha" type="password" class="formulario"> <span class="style1">*</span></td>          </tr>          <tr>            <td class="titulo1">Nivel</td>            <td class="titulo1"><input name="nivel" type="text" class="formulario"> <span class="style1">*</span></td>          </tr>                    <tr>            <td><input type="submit" class="formulario" value="Salvar"></td>            </tr>        </table>      </form></div>

Arquivo inserir_membro.asp:

<!--#include file="../includes/verifica.asp"--><%if session("login") <> true then  response.redirect "../default.asp"end if%><!--#include file="../config/conexao.asp"--><%call abre_conectarnome=request.Form("nome")celular=request.Form("celular")email=request.Form("email")login=request.Form("login")senha=request.Form("senha")nivel=request.Form("nivel")sql = "insert into users (nome, celular, email, login, senha, nivel)"sql = sql & " values ('"&nome&"', '"&celular&"', '"&email&"', '"&login&"', '"&senha&"', '"&nivel&"')"set tab = cnn.execute(sql)call fecha_conectarset tab = nothingresponse.write "Cadastro realizado com sucesso" %><a href="membros.asp">Voltar</a>

Obs.: Nas páginas onde o conteúdo é restrito... Basta usar um if no topo dá página, ou em algum conteúdo restrito...

if session("nivel") = 1 'este numero é o mesmo número q foi gravado na tabela como a permissão do usuário,'ou seja pode ser alterado de acordo com o usuário q você queira restringirresponse.write "Aki você insere o conteúdo dá página"elseresponse.write "Acesso Restrito"end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Xanburzum, obrigada por este exemplo.

 

 

Estou tentando criar/adaptar este:

 

 

Depois que preencho o formulário de login e senha passo pelo arquivo: loggin.asp:

<%
' *** Validate request to log in to this site.
MM_LoginAction = Request.ServerVariables("URL")
If Request.QueryString<>"" Then MM_LoginAction = MM_LoginAction + "?" + Request.QueryString
MM_valUsername=CStr(Request.Form("usuario"))
If MM_valUsername <> "" Then
  MM_fldUserAuthorization=""
  MM_redirectLoginSuccess="../home/stats.asp"
  MM_redirectLoginFailed="../home/error_login.asp"
  MM_flag="ADODB.Recordset"
  set MM_rsUser = Server.CreateObject(MM_flag)
  MM_rsUser.ActiveConnection = MM_conexao_STRING
  MM_rsUser.Source = "SELECT USUARIO, SENHA"
  If MM_fldUserAuthorization <> "" Then MM_rsUser.Source = MM_rsUser.Source & "," & MM_fldUserAuthorization
  MM_rsUser.Source = MM_rsUser.Source & " FROM USERS WHERE USUARIO='" & Replace(MM_valUsername,"'","''") &"' AND SENHA='" & Replace(Request.Form("senha"),"'","''") & "'"
  MM_rsUser.CursorType = 0
  MM_rsUser.CursorLocation = 2
  MM_rsUser.LockType = 3
  MM_rsUser.Open
  If Not MM_rsUser.EOF Or Not MM_rsUser.BOF Then 
    ' username and password match - this is a valid user
    Session("MM_Username") = MM_valUsername
	Response.Cookies("ConexaoUser") = MM_valUsername
	Response.Cookies("ConexaoUser").Expires = Date + 30
    If (MM_fldUserAuthorization <> "") Then
      Session("MM_UserAuthorization") = CStr(MM_rsUser.Fields.Item(MM_fldUserAuthorization).Value)
    Else
      Session("MM_UserAuthorization") = ""
    End If
    if CStr(Request.QueryString("accessdenied")) <> "" And true Then
      MM_redirectLoginSuccess = Request.QueryString("accessdenied")
    End If
    MM_rsUser.Close
    Response.Redirect(MM_redirectLoginSuccess)
  End If
  MM_rsUser.Close
  Response.Redirect(MM_redirectLoginFailed)
End If
%>

Até ai, funciona, se por ventura o usuário errar a senha é direcionado. Até ai sem problema.

 

 

Para restringir o acesso em alguma página uso um arquivo chamado restricao.asp:

<%
MM_authorizedUsers=""
MM_authFailedURL="erro.asp"
MM_grantAccess=false
If Session("MM_Username") <> "" Then
  If (true Or CStr(Session("MM_UserAuthorization"))="") Or _
         (InStr(1,MM_authorizedUsers,Session("MM_UserAuthorization"))>=1) Then
    MM_grantAccess = true
  End If
End If
If Not MM_grantAccess Then
Response.Cookies("ConexaoUser").Expires = Date - 300
  MM_qsChar = "?"
  If (InStr(1,MM_authFailedURL,"?") >= 1) Then MM_qsChar = "&"
  MM_referrer = Request.ServerVariables("URL")
  if (Len(Request.QueryString()) > 0) Then MM_referrer = MM_referrer & "?" & Request.QueryString()
  MM_authFailedURL = MM_authFailedURL & MM_qsChar & "accessdenied=" & Server.URLEncode(MM_referrer)
  Response.Redirect(MM_authFailedURL)
End If
%>

queria adaptar este, criei outra coluna chamada U_ACCESS la defino através do cadastro o valor: 1 que é para usuários registrados. no arquivo: loggin.asp percebi que faz a conexão, mas não entendi como eu faço para pegar a coluna do meu banco chamada U_ACCESS e definir que valor 1 é liberado e valor 2 é bloqueado.

 

Me ajuda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando usa a pagina loggin.asp para logar vc cria alguma session com as informações que esta vindo do banco de dados da tabela usuario?

 

Se tiver ou não tiver cria uma session para a coluna U_ACCESS.

 

um exemplo:

 

 

session("u_access") = rs("U_ACCESS")

 

E depois que a possoa logar vc começa a fazer a validação com IF

 

 

if session("u_access") = 1 then
'o que o sistema deve fazer se for 1
elseif session("u_access") = 2
'o que o sistema deve fazer se for 2
end if

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo:

 

Crie um novo banco de dados. Vamos dar o nome "banco"
para ele.
– Crie uma nova tabela. Chamaremos de "usuarios".

Agora, verifique quais campos criaremos, e os
detalhes de cada um deles:

Campo
Detalhes
id
Do tipo Autonumeração.
Será a chave primária dos usuários.
nome
Tipo texto. Pode conter
até 50 caracteres.
email
Tipo texto. Pode conter
até 50 caracteres.
login
Tipo Texto. Pode conter
até 8 caracteres somente.
senha
Tipo Texto. Pode conter
até 8 caracteres somente.
Detalhe: no item "Máscara de entrada",
escreva "password" ou "senha". Isto
fará com que o campo seja preenchido com **** ao
invés da senha do usuário, mesmo.
nivel
Tipo número. Iremos
utilizar 3 níveis diferentes (1, 2 e 3).

página de login efetivamente. default.html.

<table width="20%"
border="1" align="center" cellpadding="5"cellspacing="0"
bordercolor="#CCCCCC" class="categoria">
<tr>
<td><strong>Login:</strong></td>
<td><div align="left">
<input name="txt_login" type="text" class="form"
id="txt_login" size="10" maxlength="8">
</div></td>
</tr>
<tr>
<td><strong>Senha:</strong></td>
<td><div align="left">
<input name="txt_senha" type="text" class="form"
id="txt_senha" size="10" maxlength="8">
</div></td>
</tr>
<tr>
<td> </td>
<td align="right"> <div align="left">

<input name="Enviar" type="submit" class="Botao"
id="Enviar" value="ENVIAR">
    </div></td>
</tr>
</table>

página que captura o login e senha digitada, e verifica qual o nível de acesso
do usuário.

login.asp.

<%
‘Efetuando a conexão com a base de dados criada
Set Conn = Server.CreateObject("AdoDb.Connection")
Conn.provider="Microsoft.Jet.OLEDB.4.0"
Conn.connectionstring=Server.Mappath("/banco.mdb")
Conn.open

‘Vamos capturar o
login e a senha digitada no firmulário

login2 = Request.Form("txt_login")
senha2 = Request.Form("txt_senha")

‘Agora verificamos
se o usuário e a senha estão corretos

SQL = "select * from usuarios where login = ‘"&login2&"’
and senha = ‘"&senha2&"’ "
Set RS = Conn.Execute(SQL)

‘Caso não
esteja correto, indicamos o erro

If RS.EOF Then
Response.Write "usuário ou senha inválida!"
Response.End
End If

‘Se chegou até
aqui, é porque o login e senha estão corretos.
‘Vamos então verificar o nível de acesso do usuário.

session("nivel_acesso") = RS("nivel")
‘Colocamos numa session pois iremos utiliza-las em outras
páginas

Response.Redirect "adm.asp" ‘página
restrita

%>

 

página "adm.asp" para inserirmos o conteúdo correto de acordo
com o nível de usuário.

<%
‘A primeira coisa a ser feita é verificar se o
usuário está logado

If session("nivel_acesso") = "" Then
Response.Write "Você não está
logado!"
Response.End
End If

‘Vamos então,
verificar o nivel de acesso do usuário e inserirmos o conteúdo
correspondente

‘Aqui, cada um insere o que desejar. Vou deixar em aberto
para vocês poderem colocar o que precisam, ok?!

‘Vou colocar apenas alguns links, como se fosse um menu
If session("nivel_acesso") = 3 Then ‘gerentes
%>
≶a href=”consultar.asp”>Consultar usuário

<a href=”inserir.asp”>Inserir usuário</a>
<a href=”alterar.asp”>Alterar usuário<
/a>
<a href=”inserir.asp”>Deletar usuário</a>
<a href=”relatorios.asp”>Verificar relatórios</a>

<%
Elseif session("nivel_acesso") = 2 Then ‘supervisores
%>
<a href=”consultar.asp”>Consultar usuário</a>
<a href=”alterar.asp”>Alterar usuário</a>
<%
Else ‘estagiários
%>
<a href=”consultar.asp”>Consultar usuário</a>

<%
End If
%>

Nosso sistema está pronto! Simples, né?
Porém falta um detalhe muito importante!! E se um estagiário
digitar a URL relatorios.asp
no browser, por exemplo?! Ele terá acesso. Por isso, em
cada página com acesso restrito, precisamos fazer a verificação
do nível de acesso.
Exemplo:

Na página relatorios.asp,
coloquem o seguinte código (no início da página).

<%
If session("nivel_aecsso") < 3 Then ‘se não
for gerente

Response.Write "Você não tem autorização
para ver esta página!"
Response.End
End If
%>

Faça isso para as demais páginas
protegidas para o nível 3 e nível 2. Lembrando que
nas páginas de nível 2, o If é <
2
, ok?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi xan vou seguir seu primeiro exemplo, mas esta dando erro, na verdade tenho que alterar minha lógica, mas ok, preciso funcionando, na parte de cadastro ok, na parte de fazer o login estou fazendo assim:

<%
call abre_conectar

USUARIO=Request.Form("usuario")
SENHA=Request.Form("senha")

sql = "SELECT * FROM USERS WHERE USUARIO='"&usuario&"' AND SENHA='"&senha&"' "
set tab = cnn.execute(sql)

' Caso os dados não estiverem corretos o usuário é enviado para a entrar.htm
if tab.eof then
response.write "Login ou Senha inválidos"

else
Session("U_ACCESS")= tab("U_ACCESS")
Session("USUARIO")=TRUE

Response.Redirect"pagina.asp"
end if
call fecha_conectar
set tab = nothing
%>

acho que este trecho de login esta imcompleto esta dando erro:

Tipos incompatíveis: 'abre_conectar'

/site/includes/inc_logging.asp, linha 4

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi meninos, esquece o que falei acima :P acho que estou no meu dia de loira :lol:

Consegui fazer e deu certinho, mais uma vez obrigada garotos :wub:

 

Aproveitando eu queria outra ajudinha: ao logar estou seguindo o exemplo do Xan

logging.asp:

<%
call abre_conectar
USUARIO=Request.Form("usuario")
SENHA=Request.Form("senha")

sql = "SELECT * FROM USERS WHERE USUARIO='"&usuario&"' AND SENHA='"&senha&"' "
set tab = cnn.execute(sql)

' Caso os dados não estiverem corretos o usuário é enviado para a entrar.htm
if tab.eof then
Response.Redirect "../home/error_login.asp"

else
Session("U_ACCESS")= tab("U_ACCESS")
Session("USUARIO")=TRUE

Response.Redirect "../home/stats.asp"
end if
call fecha_conectar
set tab = nothing
%>

Para restringir colo este trecho nas páginas:

<%
If session("U_ACCESS") < 23 Then 'se não for gerente
  Response.Write "Você não tem autorização para ver esta página!"
  Response.Redirect "login.asp#pricing"
  Response.End
End If
%>

Coloquei dois responses diferentes, mas só um funciona. O primeiro um Write que informa sobre a não autorização caso o usuário não tenha acesso, e o redirect redireciona para pagina que eu quero.

 

Bem, apenas o redirect funciona, tem como informar para o usuário quando ele não tem acesso com uma mensagem na tela e depois que clicar em ok redirecionar? :huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho mesmo que vocês estão pensando: "Que garota chata"

Bem, o que eu coloquei acima de fato funcionou, mas acabou dando erro nas outras páginas e eu não queria mudar as outras páginas pois esta tudo funcionando. então vou pedir só um favorzinho, se possível adaptar aqui neste código.

 

 

Olha prometo que não peço mais nada (só que não rs :lol: ), vamos lá:

a parte do cadastro é muito simples então não vou entrar neste tópico, vamos ao que importa:

 

 

Arquivo de conexão: conexao.asp

<%
MM_conn_STRING = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("bancobia.mdb") 
%>

HTML para login: login.asp

<!--#include file="../conecta/conexao.asp" -->
<div class="dropdown-menu">
<form class="form" name="login" method="post" action="../includes/inc_loggin.asp">
<input type="text" name="Usuario" id="Usuario" size="12" maxlength="100" placeholder="Digite seu usuário">
<input type="password" name="senha" id="senha" size="12" maxlength="20" placeholder="Digite sua senha"><br>
<button name="Submit" class="btn-yellow pull-center" type="submit" onClick="MM_validateForm('Usuario','','R','senha','','R');return document.MM_returnValue">ENTRAR/button>
</form>
</div>

Arquivo loggin.asp

<!--#include file="../conecta/conexao.asp" -->
<%
' *** Validate request to log in to this site.
MM_LoginAction = Request.ServerVariables("URL")
If Request.QueryString<>"" Then MM_LoginAction = MM_LoginAction + "?" + Request.QueryString
MM_valUsername=CStr(Request.Form("usuario"))
If MM_valUsername <> "" Then
  MM_fldUserAuthorization=""
  MM_redirectLoginSuccess="../home/stats.asp"
  MM_redirectLoginFailed="../home/error_login.asp"
  MM_flag="ADODB.Recordset"
  set MM_rsUser = Server.CreateObject(MM_flag)
  MM_rsUser.ActiveConnection = MM_connDUportal_STRING
  MM_rsUser.Source = "SELECT USUARIO, SENHA"
  If MM_fldUserAuthorization <> "" Then MM_rsUser.Source = MM_rsUser.Source & "," & MM_fldUserAuthorization
  MM_rsUser.Source = MM_rsUser.Source & " FROM USERS WHERE USUARIO='" & Replace(MM_valUsername,"'","''") &"' AND SENHA='" & Replace(Request.Form("senha"),"'","''") & "'"
  MM_rsUser.CursorType = 0
  MM_rsUser.CursorLocation = 2
  MM_rsUser.LockType = 3
  MM_rsUser.Open
  If Not MM_rsUser.EOF Or Not MM_rsUser.BOF Then 
    ' username and password match - this is a valid user
    Session("MM_Username") = MM_valUsername
	Response.Cookies("User") = MM_valUsername
	Response.Cookies("User").Expires = Date + 30
    If (MM_fldUserAuthorization <> "") Then
      Session("MM_UserAuthorization") = CStr(MM_rsUser.Fields.Item(MM_fldUserAuthorization).Value)
    Else
      Session("MM_UserAuthorization") = ""
    End If
    if CStr(Request.QueryString("accessdenied")) <> "" And true Then
      MM_redirectLoginSuccess = Request.QueryString("accessdenied")
    End If
    MM_rsUser.Close
    Response.Redirect(MM_redirectLoginSuccess)
  End If
  MM_rsUser.Close
  Response.Redirect(MM_redirectLoginFailed)
End If
%>

Arquivo de restrição de usuário que colo nas páginas para bloquear acesso:

restricao.asp

<%
MM_authorizedUsers=""
MM_authFailedURL="login.asp"
MM_grantAccess=false
If Session("MM_Username") <> "" Then
  If (true Or CStr(Session("MM_UserAuthorization"))="") Or _
         (InStr(1,MM_authorizedUsers,Session("MM_UserAuthorization"))>=1) Then
    MM_grantAccess = true
  End If
End If
If Not MM_grantAccess Then
Response.Cookies("User").Expires = Date - 300
  MM_qsChar = "?"
  If (InStr(1,MM_authFailedURL,"?") >= 1) Then MM_qsChar = "&"
  MM_referrer = Request.ServerVariables("URL")
  if (Len(Request.QueryString()) > 0) Then MM_referrer = MM_referrer & "?" & Request.QueryString()
  MM_authFailedURL = MM_authFailedURL & MM_qsChar & "accessdenied=" & Server.URLEncode(MM_referrer)
  Response.Redirect(MM_authFailedURL)
End If
%>

Bem, no meu sistema atual qualquer usuário que se cadastrar tem acesso ao sistema pois não integrei a coluna U_ACCESS e sinceramente não sei como fazer isso sem afetar o sistema como em um todo, não posso mudar esta lógica pois começa dar erro em EOF E BOF, ai complica mais ainda minha vida.

 

Bem, o que realmente quero é, mesmo que o usuário esteja cadastrado, ele só vai acessar uma determinada página se estiver com o número 1 cadastrado. Eu sei eu entendi o esquema do Session (aliais, não entendi), mas não consigo apenas adaptar mais este campo sem embananar <_< tudo rs

 

Me ajuda? Por favor please :unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual o erro ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Xan, meu site é voltado para um colégio (intranet) lá os alunos criam perfil que os identifico pela coluna USUARIO, quando um aluno entra no seu perfil ele digita: intranet.net/USUARIO

 

Ao digitar o endereço com /USUARIO chamo tudo que este usuário cadastrou em seu perfil, para chamar faço assim:

<%
Dim rsProfile
Dim rsProfile_numRows

Set rsProfile = Server.CreateObject("ADODB.Recordset")
rsProfile.ActiveConnection = MM_conn_STRING
rsProfile.Source = "SELECT * FROM USERS WHERE USUARIO = '" + Replace(rsProfile__MMColParam, "'", "''") + "'"
rsProfile.CursorType = 0
rsProfile.CursorLocation = 2
rsProfile.LockType = 1
rsProfile.Open()

rsProfile_numRows = 0

Acima deste código coloco o trecho onde chamo no replace o MM_Username


<%
Dim rsProfile__MMColParam
rsProfile__MMColParam = "1"
If (Session("MM_Username") <> "") Then 
  rsProfile__MMColParam = Session("MM_Username")
End If
%>

este MM_Username é o mesmo que faço a autenticação do login acima. Quando retiro o MM_Username o sistema entende que o usuário não esta logado como deveria gerando erro no BOF EOF

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual o erro atual ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu mudei meus arquivos desta forma:

 

Loggin.asp

<%
call abre_conectar
USUARIO=Request.Form("usuario")
SENHA=Request.Form("senha")

sql = "SELECT * FROM USERS WHERE USUARIO='"&usuario&"' AND SENHA='"&senha&"' "
set tab = cnn.execute(sql)

' Caso os dados não estiverem corretos o usuário é enviado para a entrar.htm
if tab.eof then
Response.Redirect "../home/error_login.asp"

else
Session("U_ACCESS")= tab("U_ACCESS")
Session("USUARIO")=TRUE

Response.Redirect "../home/stats.asp"
end if
call fecha_conectar
set tab = nothing
%>

e restrição: restriction.asp:

<%
If session("U_ACCESS") < 23 Then 'se não for gerente
  Response.Write "Você não tem autorização para ver esta página!"
  Response.Redirect "login.asp#pricing"
  Response.End
End If
%>

Até ai funciona com o nível de acesso, mas começa gerar erro em todas as outras páginas:

 

Erro:

ADODB.Field erro '800a0bcd'

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

/includes/inc_ConPerfil.asp, linha 282

O erro em questão aponta para esta linha:

intranet/<%=(rsProfile.Fields.Item("USUARIO").Value)%>

mas isso ocorre pois estou modifiquei o arquivo loggin.asp e restricao.asp, meu sistema busca o perfil do usuário neste trecho:

<%
Dim rsProfile__MMColParam
rsProfile__MMColParam = "1"
If (Session("MM_Username") <> "") Then 
  rsProfile__MMColParam = Session("MM_Username")
End If
%>

Para chamar o trecho acima, uso na hora de conectar o banco assim:

<%
Dim rsProfile
Dim rsProfile_numRows

Set rsProfile = Server.CreateObject("ADODB.Recordset")
rsProfile.ActiveConnection = MM_conn_STRING
rsProfile.Source = "SELECT * FROM USERS WHERE USUARIO = '" + Replace(rsProfile__MMColParam, "'", "''") + "'"
rsProfile.CursorType = 0
rsProfile.CursorLocation = 2
rsProfile.LockType = 1
rsProfile.Open()

rsProfile_numRows = 0

Desta forma, não posso modificar o arquivo loggin.asp e restriction.asp da forma como eu fiz, preciso modificar e seguir o padrão atual:

 

loggin.asp

<!--#include file="../conecta/conexao.asp" -->
<%
' *** Validate request to log in to this site.
MM_LoginAction = Request.ServerVariables("URL")
If Request.QueryString<>"" Then MM_LoginAction = MM_LoginAction + "?" + Request.QueryString
MM_valUsername=CStr(Request.Form("usuario"))
If MM_valUsername <> "" Then
  MM_fldUserAuthorization=""
  MM_redirectLoginSuccess="../home/stats.asp"
  MM_redirectLoginFailed="../home/error_login.asp"
  MM_flag="ADODB.Recordset"
  set MM_rsUser = Server.CreateObject(MM_flag)
  MM_rsUser.ActiveConnection = MM_connDUportal_STRING
  MM_rsUser.Source = "SELECT USUARIO, SENHA"
  If MM_fldUserAuthorization <> "" Then MM_rsUser.Source = MM_rsUser.Source & "," & MM_fldUserAuthorization
  MM_rsUser.Source = MM_rsUser.Source & " FROM USERS WHERE USUARIO='" & Replace(MM_valUsername,"'","''") &"' AND SENHA='" & Replace(Request.Form("senha"),"'","''") & "'"
  MM_rsUser.CursorType = 0
  MM_rsUser.CursorLocation = 2
  MM_rsUser.LockType = 3
  MM_rsUser.Open
  If Not MM_rsUser.EOF Or Not MM_rsUser.BOF Then 
    ' username and password match - this is a valid user
    Session("MM_Username") = MM_valUsername
	Response.Cookies("User") = MM_valUsername
	Response.Cookies("User").Expires = Date + 30
    If (MM_fldUserAuthorization <> "") Then
      Session("MM_UserAuthorization") = CStr(MM_rsUser.Fields.Item(MM_fldUserAuthorization).Value)
    Else
      Session("MM_UserAuthorization") = ""
    End If
    if CStr(Request.QueryString("accessdenied")) <> "" And true Then
      MM_redirectLoginSuccess = Request.QueryString("accessdenied")
    End If
    MM_rsUser.Close
    Response.Redirect(MM_redirectLoginSuccess)
  End If
  MM_rsUser.Close
  Response.Redirect(MM_redirectLoginFailed)
End If
%>

restricao.asp:

<%
MM_authorizedUsers=""
MM_authFailedURL="login.asp"
MM_grantAccess=false
If Session("MM_Username") <> "" Then
  If (true Or CStr(Session("MM_UserAuthorization"))="") Or _
         (InStr(1,MM_authorizedUsers,Session("MM_UserAuthorization"))>=1) Then
    MM_grantAccess = true
  End If
End If
If Not MM_grantAccess Then
Response.Cookies("User").Expires = Date - 300
  MM_qsChar = "?"
  If (InStr(1,MM_authFailedURL,"?") >= 1) Then MM_qsChar = "&"
  MM_referrer = Request.ServerVariables("URL")
  if (Len(Request.QueryString()) > 0) Then MM_referrer = MM_referrer & "?" & Request.QueryString()
  MM_authFailedURL = MM_authFailedURL & MM_qsChar & "accessdenied=" & Server.URLEncode(MM_referrer)
  Response.Redirect(MM_authFailedURL)
End If
%>

Em resumo, preciso de ajuda para adaptar os arquivos loggin.asp e restricao.asp mas sem mudar as conexões pois afeta em todo resto do meu sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write no <%=(rsProfile.Fields.Item("USUARIO").Value)%>

para ver o que está sendo passado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.