Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Delphi para la web (https://www.clubdelphi.com/foros/forumdisplay.php?f=51)
-   -   api rest con autenticación , (https://www.clubdelphi.com/foros/showthread.php?t=97197)

ricardol 30-01-2025 16:57:45

api rest con autenticación ,
 
Saludos, tengo un desarrollo datasnap (api-rest con autenticación) desarrollada en radstudio con delphi, todo funciona bien en mi equipo de desarrollo, pero al hacer el despliegue en un servidor IIS , responde correctamente un par de veces pero después se queda colgada la llamada a la api , si le quito la atenticación funciona de maravilla, pero requiero que tenga autenticación (basica) alguien que me pueda orientar or favor

gracias !!!:-|!!!:-|

clauxs88 31-01-2025 13:41:52

Creo que sería cnveniente que publiques parte de tu codigo o algo, de la parte del login; se me ocurre que algún objeto no estas liberando.

ricardol 31-01-2025 17:59:23

gracias clauxs88 mira este es mi código donde realizo la autenticación

Código Delphi [-]
////  en el objeto  DSAuthenticationManager  conecto con mi base de datos para autenticar por usuario 

procedure TServerContainer1.DSAuthenticationManager1UserAuthenticate(
  Sender: TObject; const Protocol, Context, User, Password: string;
  var valid: Boolean; UserRoles: TStrings);
  var
   wCon:TStringList;
   Sql:string;
begin
  { TODO : Validate the client user and password.
    If role-based authorization is needed, add role names to the UserRoles parameter  }
    wCon:=TStringList.Create;
    wCon.LoadFromFile('cadena_de_conexion.txt');
    ADO1.ConnectionString:=wCon.Text;
    ADO1.Connected:=True;                           ///////////conecto a la BD
    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('Select rol,usuario,pwd,status from usuarios usuarios where usuario='+quotedstr(User) +' and pwd='+quotedstr(Password));
    Query1.Open;
    if Query1.RecordCount>0 then     /////si el usuario esta activo , le agrego los roles pueder ser de solo consulta o de escritura
    begin
        if (Query1.fieldbyname('rol').AsString='consulta'  ) then
        begin
            UserRoles.Add('consulta');
            valid := True;
        end
        else if (Query1.fieldbyname('rol').AsString='actualiza'  ) then
             begin
                 UserRoles.Add('actualiza');
                 valid := True;
             end
             else
                 valid := false;
    end
    else
        valid := false;     /////////si no esta activo el usuario   no se agregan roles

    query1.Close;        
    ADO1.Connected:=false;    cierro mi conexión a la BD

end;


La franja horaria es GMT +2. Ahora son las 15:17:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi