2015-03-30 7 views
6

क्या कस्टम पेज OAuth स्वीकृति पृष्ठ बनाने के लिए जिस तरह से सिफारिश की है:स्प्रिंग OAuth2 - OAuth पर कस्टम "OAuth अनुमोदन" पृष्ठ/अधिकृत करते

default page

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

मुझे/लॉगिन पृष्ठ को ओवरराइड करने की भी आवश्यकता है, लेकिन मुझे लगता है कि इसे ओवरराइड करने का दृष्टिकोण काफी समान होगा।

उत्तर

7

अनुशंसित तरीका "/ oauth/confirm_access" के लिए सामान्य स्प्रिंग एमवीसी @RequestMapping प्रदान करना है। आप डिफ़ॉल्ट कार्यान्वयन के लिए WhitelabelApprovalEndpoint देख सकते हैं। @SessionAttributes("authorizationRequest") का उपयोग करना न भूलें।

+0

पृष्ठ को अनुकूलित करने का कोई और तरीका है। मेरे सेटअप एप्लिकेशन में 'हैंडलर मैपिंग' का ऑर्डर 'org.springframework.security.oauth2.provider.endpoint.FrameworkEndpointHandlerMapping' से कम है और नतीजतन, कस्टम मैपिंग डिफ़ॉल्ट वाले के बाद उठाए जाते हैं और बाद वाले को ओवरराइड नहीं करते हैं? – schatten

+0

मुझे नहीं लगता कि मैं इसका अनुसरण करता हूं। आपको बस/oauth/confirm_access पर संसाधन प्रदान करना होगा (या जो भी आप एंडपॉइंट पथ को अनुकूलित करते हैं)। इससे कोई फर्क नहीं पड़ता कि आप इसे कैसे करते हैं। –

+1

'फ़्रेमव ऑर्क एंडपॉइंट हैंडलर मैपिंग' का ऑर्डर 'ऑर्डर। LOWEST_PRECEDENCE - 2' का ऑर्डर है, लेकिन मेरा कस्टम' RequestMappingHandlerMapping' 'ऑर्डर। LOWEST_PRECEDENCE' का ऑर्डर है, इस प्रकार 'org.springframework.web.servlet.DispatcherServlet # getHandler' चुनता है' फ़्रेम OrkEndpoint हैंडलर मैपिंग मैपिंग और अनुरोध कभी भी मेरे ग्राहक नियंत्रक तक नहीं पहुंचता है। दुर्भाग्यवश बदलते आदेश इस पल में मेरे लिए एक विकल्प नहीं है। मैं जो कर रहा हूं वह 'प्रमाणीकरण Endpoint.setUserApprovalPage (" आगे:/oauth/customer_path ") है; 'प्राधिकरण सर्वर कॉन्फ़िगरेशन' की '@ पोस्टकॉन्स्ट्रक्ट 'विधि में। – schatten

1

@ डेवसियर के answer के अलावा, जो अधिकांश मामलों के लिए काम करना चाहिए। कभी-कभी कॉन्फ़िगरेशन और कस्टमाइज़ेशन के आधार पर उपर्युक्त विधि काम नहीं कर सकती है, अगर Framew‌orkEndpointHandlerMa‌pping स्प्रिंग सिक्योरिटी ओएथ पैकेज से आपके आवेदन के RequestMappingHandlerMapping से अधिक ऑर्डर है। यदि यह मामला है, तो सर्वलेट प्रेषक कभी भी आपको मैपिंग तक नहीं पहुंच पाएगा और हमेशा डिफ़ॉल्ट पृष्ठ दिखाएगा।

इसे ठीक करने का एक तरीका है मैपर्स के क्रम को बदलना, Framew‌orkEndpointHandlerMa‌pping का ऑर्डर Order.LOWEST_PRECEDENCE - 2 है।

एक और तरीका है एक कस्टम URL, Framew‌orkEndpointHandlerMa‌pping द्वारा मैप नहीं करने के लिए अनुमोदन पेज सेट करने के लिए है, इस प्रकार सर्वलेट डिस्पैचर इच्छा /oauth/custom_confirm_access और /oauth/custom_error की तरह के एक विन्यास मैपिंग के रूप में इस्तेमाल किया जाएगा के साथ आप आवेदन की मैपिंग

@Configuration 
@EnableAuthorizationServer 
protected static class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter { 
    @Autowired 
    private AuthorizationEndpoint authorizationEndpoint; 

    @PostConstruct 
    public void init() { 
     authorizationEndpoint.setUserApprovalPage("forward:/oauth/custom_confirm_access"); 
     authorizationEndpoint.setErrorPage("forward:/oauth/custom_error"); 
    } 
} 

तक पहुँच जाता है क्रमशः एक पुष्टिकरण पृष्ठ और एक त्रुटि पृष्ठ।