إذا استدعيت user-api-key/new مع وجود auth_redirect يحتوي بالفعل على سلسلة استعلام (مثل http://localhost:30120/auth-discourse?state=BASE64)، فإنني أنتهي إلى URI إعادة توجيه يشبه http://localhost:30120/auth-discourse?state=BASE64?payload=PAYLOAD — أي سلسلتا استعلامتين دون استخدام & للربط بينهما.
public_key = OpenSSL::PKey::RSA.new(params[:public_key])
@payload = Base64.encode64(public_key.public_encrypt(@payload))
if scopes.include?("one_time_password")
# encrypt one_time_password separately to bypass 128 chars encryption limit
otp_payload = one_time_password(public_key, current_user.username)
end
if params[:auth_redirect]
redirect_path = +"#{params[:auth_redirect]}?payload=#{CGI.escape(@payload)}"
redirect_path << "&oneTimePassword=#{CGI.escape(otp_payload)}" if scopes.include?("one_time_password")
redirect_to(redirect_path)
else
respond_to do |format|
format.html { render :show }
format.json do
instructions = I18n.t("user_api_key.instructions", application_name: @application_name)
render json: { payload: @payload, instructions: instructions }
end
end
قد يحتاج هذا الكود إلى تعديل للتحقق مما إذا كان URI يحتوي بالفعل على سلسلة استعلام، أو ربما استخدام أداة لبناء URI؟
إعجاب واحد (1)
eviltrout
(Robin Ward)
22 يوليو 2019، 1:41م
2
يبدو أن الافتراض الذي يتخذه الكود هو أنه لا يحتوي بالفعل على أي معلمات استعلام. نحن منفتحون على استقبال طلب سحب (PR) لإصلاح هذه المشكلة.
4 إعجابات
saurabhp
(Saurabh Patel)
23 يوليو 2019، 3:50م
3
لقد فتحت طلب سحب (PR) لهذه المشكلة هنا:
master ← mrfinch:saurabh/uri-fix
merged 04:16PM - 23 Jul 19 UTC
https://meta.discourse.org/t/user-api-keys-payload-and-existing-query-string-lea… ds-to-a-double-question-mark/123617
3 إعجابات
saurabhp
(Saurabh Patel)
24 يوليو 2019، 2:37ص
4
تم دمج طلب السحب (PR). يمكن إغلاق هذا الموضوع
إعجابَين (2)