Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

322
Visualizações
Cómo ocultar una cadena de consulta en Rails

Quiero pasar a un recurso en una solicitud, por ejemplo.

 # Go to payment link <%= link_to 'Payment', checkout_path(pricing: amount.id) %>

Cuando voy al enlace de pago, la ruta de la URL es la siguiente:

 http://localhost:3000/checkout?pricing=amount_2aHUHuhdn23jnSJd

Me gustaría ocultar la cadena de consulta "pricing=amount_2aHUHuhdn23jnSJd" sin tener que usar ninguna gema

ACTUALIZAR PREGUNTA 31/12

Esta solicitud es de tipo Obtener ya que necesito mostrar los diferentes precios al usuario, por eso paso el parámetro (precio: cantidad.id)

 <%= link_to 'Payment', checkout_path(pricing: amount.id) %> get 'checkout', to: 'subscriptions#checkout'

te agradeceria tu tiempo y tu granito de arena

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Cuando el valor es sensible, ocultar el valor realmente no soluciona el problema. En su lugar, sugeriría cifrar el valor en la URL o usar otro valor no confidencial en su lugar.

  1. Cifrado de valor

Puede usar Rails MessageEncryptor para cifrar el valor antes de pasarlo a la URL y descifrarlo más tarde en el controlador nuevamente.

 # in app/models/url_encrypter.rb module URLEncrypter ENCRYPTER = ActiveRecord::MessageEncryptor.new( Rails.application.secrets.secret_key_base.first(32) ) def encrypt(value) ENCRYPTOR.encrypt_and_sign(value, purpose: :url) end def decrypt(value) ENCRYPTOR.decrypt_and_verify(value, purpose: :url) end end # when building the URL <%= link_to 'Payment', checkout_path(pricing: URLEncrypter.encyrpt(amount.id)) %> # when reading the param in the controller pricing = URLEncrypter.decyrpt(params[:pricing]) amount = Amount.find(pricing)
  1. Tener un segundo identificador único no confidencial

Aquí agrega un segundo identificador único a la tabla de su base de datos, por ejemplo, una columna llamada uuid que podría completar automáticamente en una devolución de llamada before_save con self.uuid = SecureRandom.uuid

Luego puede usar su valor en lugar de la id de esta manera:

 # when building the URL <%= link_to 'Payment', checkout_path(pricing: amount.uuid) %> # when reading the param in the controller amount = Amount.find_by(uuid: params[:pricing])
over 4 years ago · Santiago Trujillo Relatório

0

Puede almacenarlo en la sesión .

Guárdelo cuando el usuario ingrese a la página, bórrelo cuando el usuario haga clic en un enlace.

 # SomeController#before_payment session[:pricing] = amount.id #then.. # CheckoutController#index pricing = session[:pricing] session[:pricing] = nil

Tenga cuidado porque solo vivirá dentro de la sesión. Se almacenará como una cookie y tendrá un límite de datos de 4 kb.

over 4 years ago · Santiago Trujillo Relatório

0

No estoy muy seguro de lo que quiere decir sin ver su archivo route.rb. Como mencionó @Deepak Kumar para ocultar la consulta de su URL, debe usar la solicitud POST. Echa un vistazo a esta guía . Puede agregar a continuación

 post 'payment', to: 'checkout#payment'

En tus rutas.rb. Esto llamará a la acción de Payment de su CheckoutsController

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda