मैं प्रति अनुरोध कुछ जानकारी प्राप्त करना चाहता हूं, इसलिए मुझे लगता है कि प्रत्येक अनुरोध के लिए एक कार्य करने और अलग-अलग अनुरोधों से उन जानकारी प्राप्त करने के बजाय, फ़िल्टर होना बेहतर है।
तो हर अनुरोध उस फ़िल्टर को पास करेगा और मैं जो चाहता हूं उसे हासिल करूंगा।
सवाल यह है: मैं एक कस्टम फ़िल्टर कैसे लिख सकता हूं?
मान लीजिए कि यह किसी पूर्वनिर्धारित वसंत सुरक्षा फ़िल्टर की तरह नहीं है और यह बिल्कुल नया है।वसंत सुरक्षा में एक कस्टम फ़िल्टर कैसे लिखें?
उत्तर
आप मानक जावा फ़िल्टर का उपयोग कर सकते हैं। वेब.एक्सएमएल में प्रमाणीकरण फ़िल्टर के बाद बस इसे रखें (इसका मतलब है कि यह बाद में फिल्टर श्रृंखला में जाएगा और सुरक्षा फ़िल्टर श्रृंखला के बाद बुलाया जाएगा)।
public class CustomFilter implements Filter{
@Override
public void destroy() {
// Do nothing
}
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Set<String> roles = AuthorityUtils.authorityListToSet(authentication.getAuthorities());
if (roles.contains("ROLE_USER")) {
request.getSession().setAttribute("myVale", "myvalue");
}
chain.doFilter(req, res);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// Do nothing
}
}
web.xml का टुकड़ा:
<!-- The Spring Security Filter Chain -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Your filter definition -->
<filter>
<filter-name>customFilter</filter-name>
<filter-class>com.yourcompany.test.CustomFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>customFilter</filter-name>
<url-pattern>/VacationsManager.jsp</url-pattern>
</filter-mapping>
इसके अलावा, आप हैंडलर जोड़ सकते हैं कि सफल प्रवेश के बाद लागू किया जाएगा (आप SavedRequestAwareAuthenticationSuccessHandler बढ़ाने की जरूरत)। Look here यह कैसे करें। और मुझे लगता है कि यह भी बेहतर विचार है।
UPDATED:
या आप इस तरह से अपनी सुरक्षा फिल्टर के अंत में इस फिल्टर हो सकता है:
<security:filter-chain-map>
<sec:filter-chain pattern="/**"
filters="
ConcurrentSessionFilterAdmin,
securityContextPersistenceFilter,
logoutFilterAdmin,
usernamePasswordAuthenticationFilterAdmin,
basicAuthenticationFilterAdmin,
requestCacheAwareFilter,
securityContextHolderAwareRequestFilter,
anonymousAuthenticationFilter,
sessionManagementFilterAdmin,
exceptionTranslationFilter,
filterSecurityInterceptorAdmin,
MonitoringFilter"/> <!-- Your Filter at the End -->
</security:filter-chain-map>
और, यदि आप इसका उपयोग कर सकते अपने फिल्टर करने के लिए:
public class MonitoringFilter extends GenericFilterBean{
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//Implement this Function to have your filter working
}
बस मिश्रण में फेंकना; कैसे http
तत्व के अंदर custom-filter
उपयोग के बारे में:
<security:http auto-config="false" ...>
...
<security:custom-filter position="FORM_LOGIN_FILTER" ref="MyCustomFilter" />
</security:http>
यह अब तक का सबसे अच्छा समाधान है। मैं सब कुछ से पहले अपना खुद का फ़िल्टर चलाने के लिए चाहता था: <कस्टम-फिल्टर रेफरी = "myCustomFilter" = "FIRST" /> से पहले –
- 1. वसंत सुरक्षा कस्टम फ़िल्टर (पासवर्ड बदलें)
- 2. HAML कस्टम फ़िल्टर कैसे लिखें?
- 3. स्प्रिंग सुरक्षा कस्टम फ़िल्टर
- 4. वसंत सुरक्षा में कस्टम अपवादों को संभालें
- 5. वसंत सुरक्षा: कस्टम उपयोगकर्ता विवरण
- 6. लॉग 4j लिखें वसंत-सुरक्षा उपयोगकर्ता नाम
- 7. स्पैम फ़िल्टर कैसे लिखें
- 8. वसंत सुरक्षा
- 9. वसंत सुरक्षा
- 10. वसंत सुरक्षा
- 11. वसंत सुरक्षा
- 12. वसंत सुरक्षा
- 13. वसंत सुरक्षा
- 14. वसंत-सुरक्षा
- 15. वसंत सुरक्षा
- 16. वसंत-सुरक्षा
- 17. वसंत सुरक्षा
- 18. वसंत सुरक्षा
- 19. वसंत सुरक्षा:
- 20. वसंत सुरक्षा -
- 21. वसंत सुरक्षा:
- 22. जावा (वसंत) में वसंत-सुरक्षा के विकल्प
- 23. मेरी वसंत परियोजना में टैग कैसे लिखें?
- 24. वसंत-सुरक्षा के सुरक्षा कॉन्टेक्स्ट में कस्टम जानकारी कैसे संग्रहीत करें?
- 25. वसंत वेबएमवीसी और वसंत सुरक्षा
- 26. लेनदेन के साथ वसंत सुरक्षा कस्टम प्रमाणीकरण प्रदाता लपेटना
- 27. Django - एक कस्टम फ़िल्टर
- 28. वसंत: एक कस्टम ViewResolver
- 29. वसंत सुरक्षा 3.0: मैं उन URL को कैसे निर्दिष्ट करूं जिन पर एक कस्टम फ़िल्टर लागू होता है?
- 30. एक कस्टम सुंदर प्रिंटर कैसे लिखें
मैं जवाब के लिए इंतजार कर रहा था के रूप में, मैं एक समाधान के साथ आया था। मैंने अपने सुरक्षा फ़िल्टर के अंत में अपना फ़िल्टर (विस्तारित 'जेनेरिकफिल्टर बीन') जोड़ा। यह ठीक काम कर रहा है। लेकिन अब, जैसा कि मैंने आपका जवाब देखा, यह मेरे लिए बेहतर लगता है। मैं आपके समाधान का प्रयास कर रहा हूं। उम्मीद है कि यह भी काम करता है। मैं आपको परिणाम बता दूंगा। धन्यवाद। –
आम तौर पर आपका उत्तर सही है, लेकिन मुझे इसे थोड़ा संशोधित करना है। आपकी सहायता के लिए धन्यवाद. –
ठीक है। मेरे unswer संशोधित करें और मैं आपके परिवर्तन स्वीकार करेंगे। मेरे लिए यह जानना दिलचस्प होगा कि मैं कहां गलत था। – dimas