انتقال مقادیر بین صفحات در الکسیر

elixir
phoenix

#1

سلام
طبق پست قبلی مشکل csp حل شد البته من یک رشته ثابت در nonce قرار داده بودم برای هر تگ ولی حالت درستش این هست که این رشته در هر بار رفرش شدن صفحه به صورت تصادفی تولید و به همه تگ های script و style اون صفحه اختصاص داده بشه .

من برای تولید این رشته یک تابع به صورت زیر در پروژه الکسیر ایجاد کردم

def random_string_for_nonce(length) do
      :crypto.strong_rand_bytes(length) |> Base.url_encode64 |> binary_part(0, length)
end

و اون رو داخل فایل app.html.eex به این صورت فراخونی کردم

<%  cspnonce =TrangellHtmlSite.random_string_for_nonce(100) %>

برای استفاده از متغیر داخل همین صفحه مشکلی ندارم ولی میخوام در صفحات دیگه از همین متغیر استفاده بکنم
و توی همین فایل app.html.eex یک خط هم به این صورت تعریف شده

 <%= render @view_module, @view_template, assigns %>

که صفحات دیگه رو بر اساس نوع روتر لود میکنه . میخواستم ببینم چطور میشه متغیر خودم رو به render بدم که در صفحات دیگه لود بکنم راه بهتری هم براش هست یا نه


#2

میتونی تو ارگمنت دوم render یک hash بدی که چند داده رو داشته باشه

https://www.brainarama.com/thought/dbfe9020-b431-11e7-ae34-3f710d564c96/Elixir-Phoenix-framework-pass-data-from-controller-action-to-layout-view-app-html-eex


#3

آرگومنت دوم تمپلیت هر کنترلر هست . اگر متغیر خودم رو در مپ assigns مرج کنم و بعد در هر template بخونم آیا مشکل داره ؟ چون پارامتر سوم رو نمیتونم چند تا بدم


#4

میتونید امتحان کنید من خیلی وقته با template ها کار نکردم


#5

از session یا plug استفاده کن


#6

چون سمت سرور با همون nginx کار csp رو انجام دادم دیگه نیاز نشد که در الکیسر این مورد رو پیاده کنم .


#7

یکم بیشتر توضیح بدی ممنون میشم


#8

اینجا کامل شرح داده شده روشی که استفاده کردم . روش A رو استفاده کردم


#9

عذر میخوام منظورم این قسمت بود که ارتباط استفاده از csp در nginx و استفاده از یه متغیر در چند صفحه رو توضیح بدین که این موارد چه ارتباطی به هم دارند مخصوصا که گفتید چون csp رو در nginx زدم plug و session رو پیاده نکردم ، این قسمت رو متوجه نشدم


#10

تا جایی که من تحقیق کردم csp میتونه در دو لایه اعمال بشه . یک لایه با استفاده از اون اپلیکیشن هست و یک لایه دیگه با وب سرور . هر کدوم مزایا و معایب خودشون رو دارن . من لایه اپلیکیشن رو فعال نکردم اگر میخواستم فعال بکنم باید از همون plug استفاده میکردم . بر اساس نیازم از لایه وب سرور استفاده کردم که csp روی همه صفحات سایت اعمال بشه . با لایه وب سرور خوده nginx میاد رشته تصادفی رو تولید و در صفحه روی عناصر اعمال میکنه . نمیدونم درست منظور رو رسوندم یا نه .


#11

الان مشکل شما دقیقا مگر این نیس که میخوایین از یک متغیر در چند template مختلف استفاده کنید ؟


#12

این مشکلم بود که همنطور که شما فرمودید از plug میشه استفاده کرد ولی چون مشکلم رو به روش دیگه ای خارج از الکسیر حل کردم دیگه ازش استفاده نکردم


#13

:sweat_smile: شکر خدا پس همه چی حله