Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
gust_infomaster

Oracle Senhas Expirada usando VB6!!

Posts recomendados

Bem pessoal estou com um problemão, trabalho num empresa que possui vários usuários com acesso a bancos do Oracle, e me foi pedido um programinha que alterasse essa senha de acesso.

bem o programa e simples e ja funciona, meu problema hoje e com usuários expirados.

bem o que acontece é que quando o usuário esta espirado eu nao tenho como entrar no banco para fazer o desbloqueio e a devida troca de senha, estou usando o VB6 para desenvolver a aplicação.

quando o Vb me retorna ERRO eu trato este erro logando com um usuário administrativo com acesso específico para trocar este senha e liberar o usuário, mas por medidas de seguranda os arquitetos do projeto recusaram a ideia pois se alguem conseguisse invadir este código teria acesso á senha deste usuários administrativo já que seria statico no código do programa. =P

bem tendo como comparação o bem dito SQL Plus, que quando o usuário loga estando esperido imediatamente o SQL Plus lhe pede que troque de senha ja desbloqueando o usuário, realmente é mais usual desta maneira, porém não vejo como fazer isto usando VB alguem sabe algum meio.

caso nao tenha ficado calro eu esplico de outra forma hauahua ^_^

to precisando disso urgenteeeeeeeee brigadão a quem se dispor a mi ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual provider você está usando para conectar no servidor?

O OraOLEDB aceita uma parâmetro PwdChgDlg (password change dialog) que cuida de exibir uma caixa de diálogo pedindo a alteração da senha para o usuário, se necessário. (a partir da v9, se não estou enganado...)

Dá uma olhada na documentação aqui

JP

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeuuuuuuu cara, por ora eu achei um outro jeito em C#, q pessoal aqui aceitou, mas pelo que ja ouvi talvez vou ter de mudar de novo e vou tentar o que você me postou OK vlwwwwwwww

A oracle desenvolveu uma ferramenta que quando usuário expirado você a chama.

Ou seja, quando sua conexão for recusada pelo servidor, o oracle retornará o ERRO 28001 (correspondente a usuário expirado)

ai no tratamento deste erro você chama o seguinte código, fiquei de preguissa e coloquei o código inteiro bom que da pra entender melhor.

PS, só consegui fazer em C#, em VB não fui muito bem sucedido não.

e para usar o namespace da oracle "using Oracle.DataAccess.Client;"

tem que instalar um componente disponível pra download no site da empresa.

//código

Código:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.Security;

using System.Web.Util;

using System.IO;

using Oracle.DataAccess.Client;

namespace exeAlterPassOracle

{

/*

* §o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o §o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o

* DESENVOLVEDOR: Gustavo Neves Alves - USER: AX04767 - EMPRESA: RCS Informática

* DATA: 10 DE JANEIRO DE 2008

*

* DESCRIÇÃO SISTEMA: Módulo usado em conjunto com formulários HTML (Index.html), respon

* sável por executar a solicitação de alteração vinda do formulário.

*

* RETORNO: Sistema retorna o erro do oracle independente se ouve ou não erro.

* §o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o §o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o

*/

public class clsExeAlterPassWord : System.Web.UI.Page

{

private void Page_Load(object sender, System.EventArgs e)

{

string qstrAlias, qstrUser, qstrOldPass, qstrNewPass;

qstrAlias = Request.QueryString["txbAlias"];

qstrUser = Request.QueryString["txbUser"];

qstrOldPass = Request.QueryString["txbOldPass"];

qstrNewPass = Request.QueryString["txbNewPass"];

//§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o §o§o§o§o§o§o§o§o§o§o§o§o§o§o

// PROVIDER DE CONEXÃO COM O BANCO DE DADOS

//§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o§o §o§o§o§o§o§o§o§o§o§o§o§o§o§o

string strProvider = "User Id=" + qstrUser +

";Password=" + qstrOldPass +

";Data Source=" + qstrAlias;

//CRIA CONEXÃO COM O BANCO DE DADOS

OracleConnection objConnection = new OracleConnection(strProvider);

try

{

/*

* TRY | CATCH RESPONSÁVEL POR TENTAR ABRIR A CONEXÃO COM O BANCO DE DADOS

* E RODAR INSTRUÇÃO SQL PARA ALTERAÇÃO DE SENHA

* EM CASO DE ERRO SYSTEMA TRATARÁ OS ERROS NO CATCH

*/

objConnection.Open();

using (OracleCommand objCommand = new OracleCommand())

{

objCommand.CommandType = CommandType.Text;

objCommand.CommandText = "ALTER USER " + qstrUser + " IDENTIFIED BY " + qstrNewPass;

objCommand.Connection = objConnection;

objCommand.ExecuteNonQuery();

//lblResult.Text = "0;0";

Response.Write("0;0");

}

}

catch(OracleException ex)

{

/*

* CASO HAJA ERRO NO PROCESSO DESCRITO ACIMA, O CATCH FICARÁ RESPONSÁVEL POR CAPTURAR

* O ERRO DO ORACLE NA OBJETO "ex", (VER PARAMETRO "OracleException ex")

* É FEITO UM CASE(SWITCH) PARA TRATAR OS DIFERENTES TIPOS DE ERROS

* NO CASO DO 28001 (INDICA USUÁRIO EXPIRADO), USAMOS A FUNÇÃO "OpenWithNewPassword" QUE IRÁ

* INSTANCIAR UMA NOVA CONEXAO COM O BANCO DE DADOS TROCANDO A SENHA DO USUÁRIO

* E DESBLOQUEANDO O MESMO

*/

switch(ex.Number)

{

case 28001:

objConnection.OpenWithNewPassword(qstrNewPass);

break;

default:

//lblResult.Text = ex.Number + ";" + ex.Message;

Response.Write(ex.Number + ";" + ex.Message);

break;

}

}

finally

{

//FECHA CONEXAO COM O BANCO DE DADOS CASO ELE ESTAJA ABERTA

if (objConnection.State == ConnectionState.Open)

objConnection.Close();

//LIBERA DA MEMORIA OBJ CONNECTION

objConnection.Dispose();

objConnection = null;

}

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...