एक रेल आवेदन में "मुझे याद रखें" का कार्यान्वयन

मेरे रेल-ऐप में "मुझे याद रखें" चेकबॉक्स के साथ एक बॉक्स में साइन इन है। उपयोगकर्ता जो उस बॉक्स को चेक करते हैं, उनके ब्राउज़र को बंद करने के बाद भी लॉग इन रहना चाहिए। मैं इस बात का ट्रैक रख रहा हूं कि उपयोगकर्ता उपयोगकर्ता के सत्र में अपनी आईडी संग्रहीत करके लॉग इन हैं या नहीं।

लेकिन सत्रों को सत्र कुकीज़ के रूप में सत्र में लागू किया जाता है, जो लगातार नहीं होते हैं। मैं उन्हें लगातार बनाना कर सकता हूं:

class ApplicationController < ActionController::Base
  before_filter :update_session_expiration_date

  private

  def update_session_expiration_date
    options = ActionController::Base.session_options
    unless options[:session_expires]
      options[:session_expires] = 1.year.from_now
    end
  end
end

लेकिन यह एक हैक की तरह लगता है, जो ऐसी सामान्य कार्यक्षमता के लिए आश्चर्यजनक है। क्या कोई बेहतर तरीका है?

संपादित

गैरेथ का जवाब बहुत अच्छा है, लेकिन मुझे अभी भी रेल 2 से परिचित किसी व्यक्ति से उत्तर चाहिए (क्योंकि यह अद्वितीय <�कोड> कुकी सत्र स्टोर ) है।

0
जोड़ा संपादित
विचारों: 1

11 उत्तर

इसे इस्तेमाल करे:

  1. Go to Site Actions, Manage Content and Structure.
  2. Click the View menu and change to:
    • Checked Out To Me for drafts that needs to be checked in (unfortunately there is no built-in filter to check for all drafts)
    • All Draft Documents for pages to be published
    • Pending Approval for pages to be approved
  3. Click the 'select all' icon above all of the tick boxes.
  4. Click the Action menu and choose the relevant option.

मुझे ऐसे मामले मिल गए हैं जहां 'सभी का चयन करें' काम नहीं किया है और मुझे प्रत्येक पृष्ठ को अलग से जाने की आवश्यकता है। फिर भी, मुझे लगता है कि कुछ भी नहीं!

3
जोड़ा
क्या WSS muiltiple पृष्ठों का चयन करने और वेब इंटरफ़ेस से एक साथ प्रकाशित करने के लिए फ़ंक्शन प्रदान करता है? मुझे लगता है कि यह SharePoint सर्वर का मानक फ़ंक्शन होना चाहिए, लेकिन मुझे यह फ़ंक्शन नहीं मिल रहा है।
जोड़ा लेखक engtech, स्रोत
मुझे अपने कंप्यूटर से stsadm.exe नहीं मिला जो SharePoint Server 2007 के साथ स्थापित है। क्या मुझे stsadm का उपयोग करने के लिए कोई अतिरिक्त टूल इंस्टॉल करने की आवश्यकता है?
जोड़ा लेखक engtech, स्रोत
इस उपकरण का मुद्दा यह है कि हमें कंप्यूटर के साथ बैठना होगा जो एसपी सर्वर को कमांड लाइन चलाने के लिए चलाता है। सभी लंबित वस्तुओं की थोक स्वीकृति के लिए कोई दूरस्थ वेब इंटरफ़ेस? मुझे लगता है कि यह डब्ल्यूएसएस की एक मानक विशेषता होनी चाहिए, लेकिन पता नहीं लगाया जा सकता है। :-(
जोड़ा लेखक engtech, स्रोत
स्क्रीन स्नैपशॉट -> i35.tinypic.com/oad8pt.png
जोड़ा लेखक engtech, स्रोत
धन्यवाद एलेक्स! मैंने कोशिश की है लेकिन "ऑल ड्राफ्ट दस्तावेज़" में कई वस्तुओं के लिए अनुमोदन के लिए सबमिट करने का कोई तरीका नहीं है? यहां एक स्क्रीन स्नैपशॉट है, कोई विचार गलत है?
जोड़ा लेखक engtech, स्रोत
फ़ायरवॉल की वजह से अभी आपका स्क्रीनशॉट नहीं देख सकता है। जो मामला आपको मिला है वह वह होना चाहिए जो प्रबंधित सामग्री और संरचना पृष्ठ से "en masse" (सभी एक साथ) नहीं किया जा सकता है। मुझे यकीन है कि मैंने एक उपकरण या उपयोगिता देखी है जो यह करता है। अगर मैं इसे पाता हूं तो मैं जल्द ही देखूंगा और उत्तर अपडेट करूँगा।
जोड़ा लेखक Alex Angas, स्रोत
ठीक है, मैंने इसे एसी के ब्लॉग पर पाया है: andrewconnell.com/blog/articles/ & hellip; जो एक STSADM कमांड है जो साइट/साइट संग्रह में सभी आइटम प्रकाशित करेगा।
जोड़ा लेखक Alex Angas, स्रोत
stsadm सी: \ प्रोग्राम फ़ाइलें \ सामान्य फ़ाइलें \ Microsoft साझा \ वेब सर्वर एक्सटेंशन \ 12 \ BIN में रहता है। हाँ आप सही हैं कि इसे सर्वर से चलाने की जरूरत है। एक कोडप्लेक्स समाधान भी हो सकता है जो आपको चाहिए जो कर सकता है - देखें कि आप क्या पा सकते हैं! :-)
जोड़ा लेखक Alex Angas, स्रोत

मेरा मानना ​​है कि आप "सामग्री और संरचना प्रबंधित करें" पृष्ठ (साइट क्रियाएं) का उपयोग करके थोक चेक-इन कर सकते हैं।

1
जोड़ा
मैंने "सामग्री और संरचना प्रबंधित करें" पृष्ठ से कुछ समय के लिए प्रयास किया, लेकिन यह पता नहीं लगा सकता कि कैसे। यदि आप कदम साझा कर सकते हैं तो सराहना करें।
जोड़ा लेखक engtech, स्रोत

Jaap's answer above is right on target. Once you get into the Manage Content and Structure module, you need to navigate through the explorer-like view to the Library where the pages/documents are housed (will show in the right-pane). Once there, mark the checkboxes next to the ones you need to publish/check-in then go up to the action bar above and choose Actions-->Check-In. This will force a check-in of the content. Doing this is especially helpful for those users who bulk upload new documents through the Windows Explorer method and don't want to check-in each document one-by-one.

ऐसा करने के लिए एकमात्र चेतावनी, जैसा कि एलेक्स ने नोट किया था, यह है कि शेयरपॉइंट कभी-कभी आपके अनुरोध को अनदेखा कर देगा क्योंकि वहां मेटाडेटा कॉलम आवश्यक हैं जिन्हें चेक-इन करने से पहले भरना होगा। आपको मानों को अपडेट करना होगा, फिर उपर्युक्त थोक चेक-इन चरणों को करें।

1
जोड़ा
मैं बस इस बात का जिक्र कर रहा था कि जिस पुस्तकालय में वे संग्रहीत हैं, उनमें कॉलम बनाए गए हैं जिनके लिए चेक-इन करने से पहले टेक्स्ट में प्रवेश या ड्रॉपडाउन सूची से एक विकल्प की आवश्यकता होती है। ये कॉलम साइट कॉलम हो सकते हैं या सिर्फ इस सूची के लिए व्यवस्थापक द्वारा बनाए गए हैं।
जोड़ा लेखक Daniel Broekman, स्रोत
अच्छा, धन्यवाद आदमी!
जोड़ा लेखक engtech, स्रोत
"वहां मेटाडेटा कॉलम आवश्यक हैं जिन्हें चेक-इन करने से पहले भरना होगा" - कॉलम का आपका क्या अर्थ है?
जोड़ा लेखक engtech, स्रोत

आपको निश्चित रूप से सत्र कुकी को लंबे समय तक रहने के लिए विस्तारित नहीं करना चाहिए।

हालांकि विशेष रूप से रेल के साथ काम नहीं कर रहे हैं यह आलेख कुछ याद करने के लिए जाता है 'मुझे याद रखें ' सर्वोत्तम प्रथाएं।

सारांश में हालांकि आपको यह करना चाहिए:

  • एक बड़े यादृच्छिक मान को स्वीकार करने के लिए उपयोगकर्ता तालिका में एक अतिरिक्त कॉलम जोड़ें
  • क्लाइंट पर एक लंबी जीवित कुकी सेट करें जो उपयोगकर्ता आईडी और यादृच्छिक मान को जोड़ती है
  • जब कोई नया सत्र शुरू होता है, तो आईडी / मान कुकी के अस्तित्व की जांच करें और यदि वे मेल खाते हैं तो नए उपयोगकर्ता को प्रमाणित करें।

लेखक यादृच्छिक मूल्य को अमान्य करने और प्रत्येक लॉगिन पर कुकी को रीसेट करने की भी सिफारिश करता है। व्यक्तिगत रूप से मुझे यह पसंद नहीं है क्योंकि आप दो कंप्यूटरों पर किसी साइट पर लॉग इन नहीं रह सकते हैं। मैं यह सुनिश्चित करना चाहता हूं कि मेरा पासवर्ड बदलने वाला फ़ंक्शन भी यादृच्छिक मान को रीसेट कर देगा, इस प्रकार अन्य मशीनों पर सत्र लॉक कर देगा।

एक अंतिम नोट के रूप में, वह कुछ प्रमाणीकृत सत्र (पासवर्ड परिवर्तन / ईमेल परिवर्तन इत्यादि) को स्वत: प्रमाणीकृत सत्रों के लिए अनुपलब्ध करने पर सलाह देता है, जो कि वास्तविक दुनिया में शायद ही कभी देखा जा सकता है।

0
जोड़ा
यह जवाब भ्रामक है। लगातार सत्र सुरक्षित हैं क्योंकि रेल द्वारा प्रदान की गई हस्ताक्षरित कुकीज़ सुरक्षित हैं। इस उत्तर में सुझाई गई विधि का उपयोग करने का केवल एक कारण है, जो "अंतिम नोट" है: यह विधि मैन्युअल और स्वचालित ("मुझे याद रखें" कुकी के माध्यम से) प्रमाणीकरण के बीच अंतर करने के लिए उपयोगी है।
जोड़ा लेखक collimarco, स्रोत
मैं इस पर आधारित एक समाधान के साथ आया था। एक नए कॉलम पर भरोसा करने के बजाय, मैं अपने टोकन के रूप में Digest :: SHA512.base64digest (user.password_digest) का उपयोग कर रहा हूं। password_digest पहले से ही एक संरक्षित मान है, लेकिन SHA512 इसे और भी सुरक्षित रखेगा। मैं उस सत्र में user_id संग्रहीत कर रहा हूं जो सर्वर की तरफ है, ताकि मुझे प्रति सत्र एक बार SHA512 की गणना करनी पड़े। जब पासवर्ड बदल जाता है तो यह अमान्य हो जाएगा।
जोड़ा लेखक bradlis7, स्रोत
jaspan.com/improved_persistent_login_cookie_best_practice पर सुझाए गए आलेख में सुधार पर एक नज़र डालें, जो "श्रृंखला" अवधारणा को जोड़ता है बेहतर सुरक्षा इसके अलावा आपका विवरण सटीक नहीं है: 1) आपके लेख के लेखक कंप्यूटर और (यानी काम और घर) स्विच करते समय लगातार आपके लॉगिन को अमान्य करने से बचने के लिए उपयोगकर्ता और कुकी के बीच एक से कई मैपिंग तालिका सुझाते हैं 2) अमान्यता यादृच्छिक कुकी आपके द्वारा वर्णित नहीं करेगा (दो कंप्यूटर समस्या)
जोड़ा लेखक cherouvim, स्रोत

मैं रेल के लिए एक शानदार प्रमाणीकरण समाधान के लिए डेविस के लिए जाऊंगा।

0
जोड़ा

मैंने इस बारे में सोचने में थोड़ी देर बिताई है और कुछ निष्कर्ष निकाला है। रेल सत्र कुकीज़ डिफ़ॉल्ट रूप से छेड़छाड़-सबूत हैं, इसलिए आपको क्लाइंट एंड पर संशोधित कुकी के बारे में चिंता करने की ज़रूरत नहीं है।

मैंने जो किया है वह यहां है:

  • Session cookie is set to be long-lived (6 months or so)
  • Inside the session store
    • An 'expires on' date that is set to login + 24 hours
    • user id
    • Authenticated = true so I can allow for anonymous user sesssions (not dangerous because of the cookie tamper protection)
  • I add a before_filter in the Application Controller that checks the 'expires on' part of the session.

जब उपयोगकर्ता "मुझे याद रखें" बॉक्स की जांच करता है, तो मैंने सत्र [: expireson] दिनांक + 2 सप्ताह लॉगिन करने के लिए बस सेट किया है। कोई भी कुकी चोरी नहीं कर सकता है और हमेशा के लिए लॉग इन रह सकता है या किसी अन्य उपयोगकर्ता के रूप में मास्कराइड कर सकता है क्योंकि रेल सत्र कुकी छेड़छाड़-सबूत है।

0
जोड़ा
डिफ़ॉल्ट रूप से रेल सत्र कुकीज केवल ब्राउज़र सत्र होते हैं, और ब्राउज़र बंद होने पर कुकी हटा दी जाती है। आप अपने समाधान में चरण एक कैसे करते हैं, और आप किस रेल का उपयोग कर रहे हैं? "सत्र कुकी लंबे समय तक रहने के लिए सेट है (6 महीने या तो)"
जोड़ा लेखक Nick, स्रोत
मैंने सत्र कुकी को "केवल ब्राउज़र सत्र" नहीं बनाने के लिए डिफ़ॉल्ट को बदल दिया। यह उत्तर 4 साल पहले फॉर्म है और विन्यास / डिफ़ॉल्ट रेल के नए संस्करणों पर लागू नहीं हो सकता है।
जोड़ा लेखक Daniel Beardsley, स्रोत

यह 30 दिनों के लगातार सत्र बनाने के एक व्यक्ति के अनुभव का एक बहुत अच्छा लेखन है।

चेतावनी: ब्लॉग पोस्ट 2006 से है

http://grahamglass.blogs.com/main/2006/05/rails_sessionsr। एचटीएमएल

0
जोड़ा

Restful_authentication प्लगइन का एक अच्छा कार्यान्वयन है:

http://agilewebdevelopment.com/plugins/restful_authentication

0
जोड़ा

ध्यान दें कि आप अपने सत्र को जारी रखना नहीं चाहते हैं, बस उनकी पहचान। जब वे आपकी साइट पर वापस आते हैं तो आप उनके लिए एक नया सत्र तैयार करेंगे। आम तौर पर आप केवल उपयोगकर्ता को एक GUID असाइन करते हैं, उसे अपनी कुकी पर लिखें, फिर वापस आने पर उन्हें देखने के लिए इसका उपयोग करें। टोकन के लिए उनके लॉगिन नाम या उपयोगकर्ता आईडी का उपयोग न करें क्योंकि इसे आसानी से अनुमान लगाया जा सकता है और चालाक आगंतुकों को अन्य उपयोगकर्ताओं के खातों को हाइजैक करने की अनुमति मिलती है।

0
जोड़ा

मैं सुझाव दूंगा कि आप या तो RESTful_Authentication प्लग इन पर एक नज़र डालें, जिसमें इसका कार्यान्वयन है, या केवल अपने कार्यान्वयन को रीस्टफुल प्रमाणीकरण_प्लगिन का उपयोग करने के लिए स्विच करें। Railscasts पर इस प्लग का उपयोग करने के तरीके के बारे में एक अच्छी व्याख्या है:

railscasts # 67 restful_authentication

प्लगइन के लिए एक लिंक यहाँ है

restful_authentication

0
जोड़ा

यह मेरे लिए एक आकर्षण की तरह काम किया:

http://squarewheel.wordpress.com / 2007/11/03 / सत्र-कुकी समाप्ति समय में रेल /

अब मेरे कुकीस्टोर सत्र दो हफ्तों के बाद समाप्त हो जाते हैं, जिससे उपयोगकर्ता को दो सप्ताह के लिए लगातार लॉग-इन होने के लिए अपने लॉगिन प्रमाण-पत्र सबमिट करना होगा।

मूल रूप से, यह उतना आसान है जितना:

  1. विक्रेता / प्लगइन्स निर्देशिका में एक फ़ाइल सहित
  2. केवल एक पंक्ति
  3. का उपयोग कर एप्लिकेशन नियंत्रक में सत्र समाप्ति मान सेट करें
0
जोड़ा