مصادقة مستخدم في وحدة تحكم منفصلة مع Restful_Authentication

StackOverflow https://stackoverflow.com/questions/1843090

سؤال

أحاول أن أتمكن من تسجيل الدخول بسرعة أكبر قدر ممكن، لذلك أريد أن يكون المستخدمون قادرين على تسجيل الدخول وإنشاء سجلات في نفس النموذج.

هل من الممكن مصادقة مستخدم مع البرنامج المساعد Restful_Authentication من أي وحدة تحكم من خلال استدعاء طريقة إنشاء بطريقة أو بأخرى في وحدة تحكم الجلسة، وإرجاع المستخدم المصادق عليه؟ يبدو أن هذا يمكن القيام به بسهولة بطريقة أو بأخرى، لكنني لا أستطيع معرفة كيفية القيام بذلك في القضبان.

ربما شيء مثل:

# Records Controller Controller Ref Create إذا كانت بالفقر [: تسجيل الدخول] && Params [: كلمة المرور] # هذه الطريقة ستدعو / جلسة / وقم بعملية تسجيل الدخول / كلمة مرور المستخدم = Authenticate_User (Params [: تسجيل الدخول "]، Params [: كلمة المرور]) record = record.new (Params [: سجل]) @ record.user = المستخدم إذا كان السؤال .Save && فلاش المستخدم [: إشعار] = "تم إنشاء سجل بنجاح". redirect_to (@ record) نهاية النهاية

أي أفكار حول كيفية القيام بذلك سيكون موضع تقدير!

هل كانت مفيدة؟

المحلول

لقد اختبرت هذا الرمز على القضبان 2.3.4 ويعمل؛ يبقى المستخدم مسجلا. ضع في اعتبارك أنه يجب عليك محاولة إعادة المرسل بحيث يعيش رمز المصادقة في مكان واحد، بدلا من وجوده مكررة في العديد من وحدات التحكم.

لاحظ أيضا أن رمز المصادقة في هذا القصاص هو إصدار مبسط من ذلك في وحدة تحكم الجلسات، لذلك لا يتعامل مع أي من وظائف "تذكرني".

# POST /stacks
# POST /stacks.xml
def create
  @stack = Stack.new(params[:stack])

  if params[:login] && params[:password]
    logout_keeping_session!
    user = User.authenticate(params[:login], params[:password])
    self.current_user = user
  end

  respond_to do |format|
    if !user
      flash[:error] = 'Login details incorrect.'
      format.html { render :action => "new" }
      format.xml  { render :xml => @stack.errors, :status => :unprocessable_entity }
    elsif @stack.save
      flash[:notice] = 'Stack was successfully created.'
      format.html { redirect_to(@stack) }
      format.xml  { render :xml => @stack, :status => :created, :location => @stack }
    else
      format.html { render :action => "new" }
      format.xml  { render :xml => @stack.errors, :status => :unprocessable_entity }
    end
  end
end
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top