পরিকল্পনা করা - আমি কীভাবে নির্দিষ্ট ব্যবহারকারীদের সাইন ইন করতে নিষেধ করব?


105

আমি আমার অ্যাপ্লিকেশনটিতে প্রমাণীকরণের জন্য ডিভাইস ব্যবহার করছি।

আমি কীভাবে নির্দিষ্ট ব্যবহারকারীদের সাইন ইন করতে নিষেধ করব - ধরণের কোনও ব্যবহারকারীকে অক্ষম করুন?


42
এটিকে একটি বৈধ প্রশ্ন হল এবং পুনরায় খোলার করা হবে না - ওপি জিজ্ঞাসা করা হয় ব্যবহার করে "আমি কিভাবে সাইন ইন থেকে নির্দিষ্ট ব্যবহারকারীদের নিষেধ না" উইল
জাবাবা

উত্তর:


149

এটা এভাবে করো:

মডেলের is_activeজন্য ডাকা একটি কলাম তৈরি করুন User

তারপরে Userমডেলটিতে নীচের কোডটি যুক্ত করুন :

class User < ActiveRecord::Base
  #this method is called by devise to check for "active" state of the model
  def active_for_authentication?
    #remember to call the super
    #then put our own check to determine "active" state using 
    #our own "is_active" column
    super and self.is_active?
  end
end

হালনাগাদ

ম্যাট হাগিনস নোট হিসাবে, পদ্ধতি এখন বলা হয় active_for_authentication?( ডকুমেন্টেশন )


21
দেখে মনে হচ্ছে এটি ন্যায়বিচারের active_for_authentication?পরিবর্তে নতুন নামকরণ করা হয়েছে active?
ম্যাট হাগিনস 21

1
the method is now called active_for_authentication?মানে আপনার পদ্ধতির নামটি active_for_authentication?পরিবর্তে হওয়া উচিত active?
fotanus


গুরুত্বপূর্ণ নোট: active_for_authentication?একটি সর্বজনীন পদ্ধতি হতে হবে!
ম্লাদেন জাবলানোভিć

super and self.is_active?সরলীকৃত করা যেতে পারেsuper && is_active?
ডেভিড

17

করার জন্য একটি কলাম যোগ করুন Userমডেল: allowed_to_log_in

তারপরে এটি যুক্ত করুন /app/models/user.rb:

def active_for_authentication?
    super and self.allowed_to_log_in?
end

আপনি যদি কোনও কাস্টম বার্তা দিয়ে ব্যবহারকারীকে জানাতে চান তবে আপনি এটি যুক্ত করতে পারেন:

def inactive_message
    "You are not allowed to log in."
end

আমি মনে করি এটি বেশ গুরুত্বপূর্ণ কারণ ডিভাইসের মানক বার্তাটি বলেছেন:

"আপনার অ্যাকাউন্ট এখনো সক্রিয় না."

এটি ব্যবহারকারীদের জন্য বিভ্রান্তিকর এবং আসল কারণ হ'ল আপনি তাদের লগ ইন করতে "নিষিদ্ধ" করেছেন।


আমি ব্যবহারকারীর সাসপেনশন বৈশিষ্ট্যটি প্রয়োগ করছি যা কার্যকর হয় তবে নিষ্ক্রিয়_মেসেজ "আপনার অ্যাকাউন্ট বর্তমানে স্থগিত করা হয়েছে" এখন ব্যবহারকারী সাইনআপগুলির জন্যও প্রদর্শিত হয়। নতুন অ্যাকাউন্ট অ্যাক্টিভেশন এবং ব্যবহারকারী স্থগিতের জন্য আমার কী আলাদা নিষ্ক্রিয় বার্তা থাকতে পারে?
ডারকনি


নিষ্ক্রিয়_মেসেজ মন্তব্যের জন্য ধন্যবাদ।
ক্রিস কৃষক

0

আপনি অনুমোদন করতে চান, অনুমোদন করতে চান। যদিও ডিভাইসটি কেবল অ্যাটিটিকেশন করে।
আইডিসি কেবল আপনাকে জানায় যে একজন ব্যবহারকারী তিনি হলেন তিনি যে বলেছেন তিনি।
সাইটটি ব্যবহার থেকে বিরত রাখতে আপনার অন্য কিছু দরকার।

অনুমোদন একটি জনপ্রিয় বিষয় এবং রত্নগুলির একটি সম্পূর্ণ তালিকা রয়েছে যা এটির সাথে আপনাকে সহায়তা করতে পারে:
http://ruby-toolbox.com / বিভাগগুলি / রয়্যাল_অর্থাইজেশন
Html আপনার বাছাই করুন।


6
আমি পার্থক্য জানি। জিনিসটি হ'ল আমি ব্যবহারকারীকে সাইন ইন করতে নিষেধ করতে চাই, নির্দিষ্ট নিয়ামক অ্যাক্সেস না করে।
দিমিতর ভলডেফ

-2

আপনার মত শোনাচ্ছে ক্যানকানে আগ্রহী


1
এটি জিজ্ঞাসিত প্রশ্নের উত্তর নয়। বেশিরভাগ মানুষ অনুমোদন এবং প্রমাণীকরণের মধ্যে পার্থক্য জানেন। প্রশ্নটি ছিল কীভাবে আপনি এটি তৈরি করেন যাতে কোনও ব্যবহারকারী লগইন করতে না পারে।
isaacsloan
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.