পাখি: কুখ্যাত "কারেন্ট_উজার" কোথা থেকে এসেছে?


95

আমি সম্প্রতি রিলে ঘুরেছিলাম এবং লক্ষ্য করেছি যে এখানে প্রচুর উল্লেখ রয়েছে current_user। এটি কি কেবল ডিভাইস থেকে আসে? এবং আমি ডিভাইস ব্যবহার করলেও কি আমাকে নিজেই এটি সংজ্ঞায়িত করতে হবে? ব্যবহার করার পূর্বশর্তগুলি রয়েছে current_user(যেমন সেশন, ব্যবহারকারী ইত্যাদির অস্তিত্ব)?

উত্তর:


84

এটি বেশ কয়েকটি রত্ন দ্বারা সংজ্ঞায়িত করা হয়, যেমন ডিভাইস

আপনার ব্যবহারকারীর আইডি কোথাও সংরক্ষণ করতে হবে, সাধারণত লগ ইন করার পরে সেশনে It এটি আপনার অ্যাপ্লিকেশনটির ব্যবহারকারী এবং প্রমাণীকরণ ইত্যাদির প্রয়োজনও অনুমান করে and

সাধারণত এটি এর মতো:

class ApplicationController < ActionController::Base
  def current_user
    return unless session[:user_id]
    @current_user ||= User.find(session[:user_id])
  end
end

এটি ধরে নিয়েছে যে ব্যবহারকারীর শ্রেণি বিদ্যমান, যেমন #{Rails.root}/app/models/user.rb

আপডেট হয়েছে: যখন কোনও বর্তমান ব্যবহারকারী নেই তখন অতিরিক্ত ডাটাবেস প্রশ্নগুলি এড়ান।


ব্যবহারকারীর লগইন স্থিতি নিয়ন্ত্রণের উদ্দেশ্যে সেশনগুলি সাধারণত কোনও ব্যবহৃত নিয়ন্ত্রক / মডেলের মতো? নাকি এটি রেলপথে নির্মিত?
বড়পোটাটো

sessionকারাগারে নির্মিত হয়। ডিফল্টরূপে, এটি অনুরোধের মধ্যে ক্লায়েন্টের অবস্থা বজায় রাখতে একটি কুকি ব্যবহার করে। আরও তথ্যের জন্য গাইড.আরউব্রনআরাইলস.আর / সুরক্ষাHtml# অনুচ্ছেদ দেখুন ।
এরিক পিটারসন

4
দ্রষ্টব্য: আপনি যদি এই উত্তরটি পড়ছেন তবে return unless session[:user_id]Zach এর উত্তরে প্রদর্শিত হিসাবে অন্তর্ভুক্ত করতে ভুলবেন না - তা ছাড়া if current_userসাইন আউট করার সময় প্রতিটি চেক অন্য ডাটাবেস ক্যোয়ারিকে ট্রিগার করবে।
ড্রেডপাইরেটশান

10

হ্যাঁ, current_userব্যবহার session। আপনি যদি নিজের নিজস্ব প্রমাণীকরণ রোল করতে চান তবে আপনি নিজের অ্যাপ্লিকেশন কন্ট্রোলারে অনুরূপ কিছু করতে পারেন:

def current_user
  return unless session[:user_id]
  @current_user ||= User.find(session[:user_id])
end

ব্যবহারকারীর লগইন স্থিতি নিয়ন্ত্রণের উদ্দেশ্যে সেশনগুলি সাধারণত কোনও ব্যবহৃত নিয়ন্ত্রক / মডেলের মতো? নাকি এটি রেলপথে নির্মিত?
বড়পোটাটো

4
sessionparamsএটি একাধিক অনুরোধের জন্য অব্যাহত বাদে এক ধরণের পছন্দ । আপনি আপনার স্বতন্ত্র ব্যবহারকারীর কাছে অনন্য যেকোনো ধরণের প্যারামিটার সংরক্ষণ করতে এটি ব্যবহার করতে পারেন (তাদের সেশনটির মেয়াদ শেষ না হওয়া পর্যন্ত বা তারা লগ আউট না করে)। আপনি এটি সম্পর্কে এখানে আরও পড়তে পারেন: অ্যাকশনকন্ট্রোলার: অধিবেশন অ্যাক্সেস করা
জ্যাচ কেম্প
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.