2012-03-22 16 views
13

हाय stackoverflow मित्र लॉग इन प्रतीत होता है,Symfony2- लॉग इन फार्म फिर बाद में

मैं एक उदाहरण है कि, symfony2 में मैं एक सुरक्षा बंडल (इस्तेमाल नहीं किया FOS उपयोगकर्ता बंडल) जिसमें जब मैं में लॉग इन किया है, मैं करने की कोशिश बनाया है लॉगिन पेज को फिर से एक्सेस करें, लॉगिन फॉर्म दिखाया गया है। अगर डिफ़ॉल्ट रूप से लॉग इन किया गया है, तो भी डिफ़ॉल्ट पृष्ठ पर कोई पुनर्निर्देशन नहीं है। लॉग इन करने के बाद, इस लॉगिन फॉर्म को कैसे रोकें।

नीचे मेरी सुरक्षा है।

अद्यतन

firewalls: 
     main: 
      pattern: ^/ 
      anonymous: ~ 
      form_login: 
       login_path: /login 
       check_path: /login_check 
      logout: 
       path: /logout 
       target: /login  

    access_control: 
     - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/centerreg, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/customredirect, roles: ROLE_USER } 
     - { path: ^/admin/, roles: ROLE_ADMIN } 
     - { path: ^/center/, roles: ROLE_CENTER } 
     - { path: ^/client/, roles: ROLE_CLIENTADMIN } 
     - { path: ^/examcenter/, roles: ROLE_EXAMCENTER } 
     - { path: ^/tutor/, roles: ROLE_TUTOR } 
     - { path: ^/evaluator/, roles: ROLE_EVALUATOR } 
     - { path: ^/student/, roles: ROLE_STUDENT } 
     - { path: ^/user/, roles: ROLE_USER } 

कोई भी मदद सराहनीय होगी।

+0

हाय, यह समाधान मेरे लिए क्यों काम नहीं करता है? .. मुझे चक्र संदर्भ मिला ... और सिम्फनी डॉक्टर लॉगिन की तरह फ़ायरवॉल के सामने होना चाहिए ... इसके लिए समाधान कैसा है? सिम्फनी 2.7.4 – Franky238

उत्तर

21

Symfony प्रवेश पृष्ठ हमेशा पहुँचा जा सकता है क्योंकि के रूप में security.yml में संकेत स्वचालित रूप से इस काम नहीं चलेगा:

access_control: 
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 

ऐसा न करने पर प्रमाणीकृत उपयोगकर्ताओं को लॉगिन पेज पर जाना चाहते हैं, आपको उन्हें लॉगिन पृष्ठ से मैन्युअल रूप से रीडायरेक्ट करने की आवश्यकता है। ऐसा करने के लिए, लॉगिन कार्रवाई के लिए अपने नियंत्रक को और loginAction की शुरुआत में जाना() फ़ंक्शन जोड़ें:

public function loginAction() 
{ 
    if ($this->get('security.context')->isGranted('IS_AUTHENTICATED_FULLY')) 
    { 
     // redirect authenticated users to homepage 
     return $this->redirect($this->generateUrl('_homepage')); 
    } 

    //other code goes here... 
} 

यह अपने मुखपृष्ठ में प्रमाणीकृत उपयोगकर्ताओं रीडायरेक्ट करेगा। बेशक, उस पृष्ठ के रूट नाम पर '_homepage' को प्रतिस्थापित करें जिसे आप उपयोगकर्ताओं को रीडायरेक्ट करना चाहते हैं।

+1

धन्यवाद कोस्टा ... आप मेरी समस्या का पता लगाते हैं। –

+0

मुझे खुशी है कि मैं मदद कर सकता हूं :-) – Kosta

+0

इसके बजाय $-> कंटेनर-> प्राप्त करें ('security.authorization_checker') (2.6 में नया) – Ronan

1

क्या आप अपने मार्गों के साथ प्रश्न अपडेट कर सकते हैं?

मुझे लगता है कि आप डिफ़ॉल्ट रास्ता है कि अपनी प्रवेश फार्म का प्रतिनिधित्व करता है होना चाहिए (उदाहरण के लिए, /secure-area) कि प्रमाणीकरण की आवश्यकता है और कुछ अन्य (उदाहरण के लिए, /secure-area/login)। इसलिए, मूल रूप से, विज़िटर लौटने पर /secure-area/login पर जाएं लेकिन /secure-area इसके बजाय। इस तरह से इसके लिए लॉगिन लेकिन सत्र से पुनः लोड उपयोगकर्ता नहीं दिखाया जाएगा ...

+0

हाय जेपरोविक आपकी महान प्रतिक्रिया के लिए धन्यवाद। मैं पूरी तरह से समझ नहीं पाया कि आप क्या व्यक्त करने की कोशिश कर रहे हैं। मैंने सुरक्षा प्रश्न के साथ अपना प्रश्न अपडेट किया। –

संबंधित मुद्दे