2012-12-02 12 views
6

मेरे पास यह वेबसाइट लॉगिन फ़ॉर्म के साथ है और सफलतापूर्वक लॉग इन करने के बाद, मुझे इंडेक्स पर रीडायरेक्ट किया गया है। लेकिन जब मैं बैक बटन पर क्लिक करता हूं, तो यह मुझे अभी भी लॉगिन फॉर्म को देखने देता है जो अच्छा नहीं है। मैं केवल लॉगिन फॉर्म को केवल अनाम व्यूअर द्वारा एक्सेस किया जाना चाहता हूं, न कि उन उपयोगकर्ताओं ने जो पहले ही लॉग इन हैं। Symfony2 में ऐसा करने का कोई आसान तरीका है? धन्यवादSymfony2 - बेनामी के लिए लॉगिन और पंजीकरण पृष्ठ के लिए एक्सेस केवल उपयोगकर्ता नहीं

यहाँ मेरी सुरक्षा .:


    jms_security_extra: 
    secure_all_services: false 
    expressions: true 

security: 
    encoders: 
     Mata\UserBundle\Entity\User: 
      algorithm:  sha1 
      encode_as_base64: false 
      iterations: 1 

    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 


    providers: 
     user_db: 
      entity: { class: MataUserBundle:User, property: username } 

    firewalls: 

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

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

उत्तर

5

यह यह करने के लिए सबसे अच्छा या उचित तरीके से नहीं किया जा सकता है, लेकिन इसके लिए एक ही रास्ता मैं यह पता लगा सकता है किया गया।

मेरे लॉगिन में विधि विधि मैं यह करता हूं ($ सुरक्षित चर देखें)। यदि उपयोगकर्ता सत्र प्रमाणीकृत है तो मैं उन्हें घर/अनुक्रमणिका पृष्ठ पर रीडायरेक्ट करता हूं। मुझे फ़ायरवॉल कॉन्फ़िगरेशन के माध्यम से ऐसा करने का कोई तरीका नहीं पता है क्योंकि मुझे विश्वास नहीं है कि लॉगिन पृष्ठ में कभी भी फ़ायरवॉल संलग्न होगा।

/** 
* @Route("/login", name="login") 
* @Template() 
*/ 
public function loginAction() 
{ 
    $request = $this->getRequest(); 
    $session = $request->getSession(); 

    // if the session is secured (user is logged in) 
    // then $secured will be an object with various user information. 
    $secured = unserialize($session->get('_security_secured')); 
    if ($secured) { 
     return $this->redirect($this->generateUrl('home')); 
    } 

    // get the login error if there is one 
    if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) { 
     $error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR); 
    } else { 
     $error = $session->get(SecurityContext::AUTHENTICATION_ERROR); 
    } 

    return array(
     'last_username' => $session->get(SecurityContext::LAST_USERNAME), 
     'error'   => $error, 
     'embed'   => $request->isXmlHttpRequest() 
    ); 
} 
+0

तेज उत्तर के लिए धन्यवाद। मैं भी ऐसा कुछ इस्तेमाल कर समाप्त हो गया। // चेक इन यदि पहले ($ this-> प्राप्त करें ('security.context') -> isgranted ('IS_AUTHENTICATED_FULLY')) { // प्रमाणीकृत उपयोगकर्ताओं को मुखपृष्ठ पर रीडायरेक्ट करें $ 2-> रीडायरेक्ट ($ this-> generateUrl ('mata_page_home')); } –

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