2015-06-23 5 views
6

मैं Phoenix Guide on Sessions के माध्यम से जा रहा हूं। यह बहुत अच्छी तरह से बताता है कि मैं put_session का उपयोग करके सत्र में डेटा कैसे जोड़ सकता हूं और बाद में get_session का उपयोग करके मान ला सकता हूं लेकिन यह नहीं बताता कि मैं उपयोगकर्ता के सत्र को कैसे हटा सकता हूं।फीनिक्स सत्र को कैसे हटाएं?

गाइड से:

defmodule HelloPhoenix.PageController do 
    use Phoenix.Controller 

    def index(conn, _params) do 
    conn = put_session(conn, :message, "new stuff we just set in the session") 
    message = get_session(conn, :message) 

    text conn, message 
    end 
end 

उत्तर

6

मुझे लगता है कि आप देख रहे हैं configure_session है:

Plug.Conn.configure_session(conn, drop: true) 
+0

धन्यवाद, मुझे यकीन है कि क्या साथ जाने के लिए नहीं कर रहा हूँ। 'clear_session' या' config_session'। – Sheharyar

+1

या तो सुनिश्चित नहीं है, लेकिन 'conn |> config_session (: ड्रॉप)' पूरी तरह से इसे कमजोर लगता है, इसलिए यह एक सुरक्षित शर्त है यदि आप चाहते हैं कि –

+0

बस इसे आज़माएं, मुझे अपवाद मिलता है: '(प्रोटोकॉल.उंडिफाइन एरर) प्रोटोकॉल एक्सेस नहीं इसके लिए कार्यान्वित किया गया: ड्रॉप, केवल शून्य परमाणु समर्थित है ' – Sheharyar

8

Plug Docs में यह मिल गया:

clear_session(conn)

पूरे सत्र को साफ़ करता है।

यह फ़ंक्शन सत्र से प्रत्येक कुंजी को हटा देता है, सत्र साफ़ करता है।

ध्यान दें कि, अगर clear_session/1 का उपयोग किया जाता है, तो भी सत्र क्लाइंट को भेजा जाता है। यदि सत्र प्रभावी ढंग से गिरा दिया जाना चाहिए, config_session/2 का उपयोग: ड्रॉप विकल्प को सही पर सेट किया जाना चाहिए।


आप अपने SessionsController में कुछ इस तरह रख सकते हैं:

def delete(conn, _) do 
    conn 
    |> clear_session 
    |> redirect to: page_path(conn, :index) 
end 

और अपने web/router.ex में इस के लिए एक मार्ग को जोड़ने।