मेरे पास प्रमाणीकरण के लिए शिरो का उपयोग करके एक वेबपैप है। web.xml के प्रासंगिक भागों और shiro.ini हैं:यदि उपयोगकर्ता पहले ही प्रमाणीकृत है तो मैं कॉन्फ़िगर किए गए Shiro loginUrl पर अनुरोध कैसे रीडायरेक्ट कर सकता हूं?
<listener>
<listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>
<filter>
<filter-name>ShiroFilter</filter-name>
<filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ShiroFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
और
[main]
authc.loginUrl = /authoring/login.html
authc.successUrl = /authoring
logout.redirectUrl = /authoring/login.html
[users]
foo = foo
[urls]
/authoring/logout = logout
/authoring/** = authc
Shiro सही ढंग से गैर-प्रमाणीकृत ग्राहकों से सभी अनुरोधों को बीच में रोक और (कॉन्फ़िगर loginUrl पर रीडायरेक्ट और फिर उन्हें अग्रेषित करता है सफल प्रमाणीकरण के बाद अनुरोधित पृष्ठ पर)। मैं क्या करना चाहता हूं, यदि कोई प्रमाणीकृत क्लाइंट /authoring/login.html को स्पष्ट अनुरोध करता है, तो इसे रीडायरेक्ट करने/संलेखन करने के लिए। यह तभी होगा जब क्लाइंट प्रमाणीकृत हो।
उदाहरण के लिए, जीमेल कैसे काम करता है - मेल.google.com (या यहां तक कि https://accounts.google.com/ServiceLogin) तक पहुंचने का प्रयास करते समय सोचें कि जब आप पहले ही लॉग इन कर चुके हैं तो आपको इनबॉक्स में रीडायरेक्ट कर दिया जाएगा। क्या शिरो के साथ बॉक्स के बाहर यह संभव है? यदि नहीं, तो इसे लागू करने का सही तरीका क्या है?
क्या आप PassThruAuthenticationFilter को विस्तारित करने और फिर उस कोड को ओवरराइड विधि में डालने का सुझाव दे रहे हैं? यदि ऐसा तरीका है - मुझे उपयुक्त एक प्रतीत नहीं होता है। या आप कह रहे हैं कि कोड नियंत्रक में होना चाहिए? वर्तमान में हमारे पास लॉगिन नियंत्रक नहीं है, और मैं यह समझने की कोशिश कर रहा हूं कि आपकी सिफारिश का उपयोग कैसे करें। – alan
नहीं, मैं सुझाव दे रहा हूं कि आप उस कोड को अपने लॉगिन पेज पर जो भी सेवा देते हैं उसे डाल दें। मैं जेएसएफ का उपयोग करता हूं ताकि कोड मेरे बैकिंग बीन –
में मेरे लॉगिन विधि के अंदर जा सके, आप जो भी चाहते हैं उसे करने के लिए आप डिफ़ॉल्ट फ़िल्टर 'org.apache.shiro.web.filter.authc.FormAuthenticationFilter' का विस्तार कर सकते हैं, तो आपको शायद पहुंच होगी यहां से सफलता यूआरएल भी –