কোনও কারণে :all
ডোমেনের সাথে প্রতিস্থাপন করা আমার পক্ষে কাজ করে নি (রেল 3.2.11)। এটি ঠিক করার জন্য এটি কাস্টম মিডলওয়্যারের একটি অংশ নিয়েছিল। নীচের সমাধানের সংক্ষিপ্তসারটি নীচে।
tl; dr: আপনাকে একটি কাস্টম র্যাক মিডলওয়্যার লিখতে হবে। আপনার এটিতে আপনার যুক্ত হওয়া দরকার conifg/environments/[production|development].rb
। এটি ails.২.১১ এর কারাগারে রয়েছে
কুকি সেশনগুলি সাধারণত আপনার শীর্ষ স্তরের ডোমেনের জন্য সংরক্ষণ করা হয়।
আপনি তাকান Chrome -> Settings -> Show advanced settings… -> Privacy/Content settings… -> All cookies and site data… -> Search {yourdomain.com}
আপনি দেখতে পারেন যে জন্য পৃথক এন্ট্রি হতে হবে sub1.yourdomain.com
এবং othersub.yourdomain.com
এবংyourdomain.com
চ্যালেঞ্জটি হ'ল সমস্ত সাবডমাইনগুলিতে একই সেশন স্টোর ফাইলটি ব্যবহার করা।
পদক্ষেপ 1: কাস্টম মিডলওয়্যার ক্লাস যুক্ত করুন
রাক মিডলওয়্যারটি এখানেই আসে Some কিছু প্রাসঙ্গিক র্যাক এবং রেলের সংস্থানগুলি:
এখানে একটি কাস্টম শ্রেণি রয়েছে যা আপনার এতে যোগ করা উচিত lib
এটি @ ন্যাডার লিখেছিলেন এবং আপনারা সবাই তাকে ধন্যবাদ জানাতে হবে
class CustomDomainCookie
def initialize(app, default_domain)
@app = app
@default_domain = default_domain
end
def call(env)
host = env["HTTP_HOST"].split(':').first
env["rack.session.options"][:domain] = custom_domain?(host) ? ".#{host}" : "#{@default_domain}"
@app.call(env)
end
def custom_domain?(host)
host !~ /#{@default_domain.sub(/^\./, '')}/i
end
end
মূলত এটি যা করে তা হ'ল এটি আপনার সমস্ত কুকি সেশন ডেটা ম্যাপ করবে ঠিক একই কুকি ফাইলটিতে যা আপনার রুট ডোমেনের সমান।
পদক্ষেপ 2: রেলগুলিতে কনফিগার করুন
এখন আপনার লিবিতে একটি কাস্টম ক্লাস রয়েছে, এটি স্বয়ংক্রিয়ভাবে চালিয়ে যাচ্ছেন তা নিশ্চিত করুন। যদি এটি আপনার কাছে কিছুই বোঝায় না, তবে এখানে দেখুন: 3 টি গাড়ি চালানো ails
প্রথম জিনিসটি হ'ল আপনি কোনও কুকির স্টোর ব্যবহার করে সিস্টেম-ওয়াইড কিনা তা নিশ্চিত করা। ইন config/application.rb
আমরা একটি কুকিজ সঞ্চয় ব্যবহার করতে পাগল বলুন।
config.session_store :cookie_store,
:key => '_yourappsession',
:domain => :all
এখানে এখানে উল্লেখ করার কারণটি :domain => :all
লাইনটির কারণে । অন্যান্য লোকেরা :domain => ".yourdomain.com"
পরিবর্তে নির্দিষ্ট করার পরামর্শ দিয়েছেন :domain => :all
। কিছু কারণে এটি আমার পক্ষে কার্যকর হয়নি এবং উপরে বর্ণিত হিসাবে কাস্টম মিডলওয়্যার ক্লাসের আমার প্রয়োজন ছিল।
তারপরে আপনার config/environments/production.rb
অ্যাডে:
config.middleware.use "CustomDomainCookie", ".yourdomain.com"
উল্লেখ্য পূর্ববর্তী বিন্দুটি প্রয়োজনীয় is "দেখ উপ-ডোমেইন কুকিজ, একটি পিতা বা মাতা ডোমেইন অনুরোধ? পাঠানো " কেন জন্য।
তারপরে আপনার config/environments/development.rb
অ্যাডে:
config.middleware.use "CustomDomainCookie", ".lvh.me"
Lvh.me কৌশল লোকালহোস্টে মানচিত্র onto এটা অসাধারণ. দেখুন সাবডোমেন সম্পর্কে এই Railscast এবং এই নোটটি আরও তথ্যের জন্য।
আশা করি এটি করা উচিত। আমি আন্তরিকভাবে পুরোপুরি নিশ্চিত নই যে প্রক্রিয়াটি কেন এই সংঘাতযুক্ত, কারণ আমি মনে করি ক্রস সাবডোমেন সাইটগুলি সাধারণ। কারও কাছে যদি এই পদক্ষেপগুলির প্রতিটিের পিছনে কারণ সম্পর্কে আরও অন্তর্দৃষ্টি থাকে, তবে আমাদের মন্তব্যগুলিতে আলোকিত করুন।