निर्दिष्ट करें मैं जेडीबीसी ऑथ का उपयोग कर स्प्रिंग 3 सुरक्षा सेट अप करने की कोशिश कर रहा हूं। सब कुछ ठीक काम कर रहा है जब मैं एक इंटरसेप्ट-यूआरएल में एकाधिक एक्सेस भूमिका निर्दिष्ट करने का प्रयास करता हूं। उदाहरण के लिए मैं भूमिकाओं ROLE_USER और ROLE_ADMIN के साथ किसी के सभी पृष्ठों उपयोग करने में सक्षम होना चाहता हूँ, मैं अपने वसंत कॉन्फ़िग फ़ाइल में follwoing लाइन का उपयोग करें -स्प्रिंग सुरक्षा 3 एकाधिक इंटरसेप्ट-यूआरएल एक्सेस भूमिकाएं
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.web.access.intercept.FilterSecurityInterceptor#0': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Unsupported configuration attributes: [ ROLE_ADMIN]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1401)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:289)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:286)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:188)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:558)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:852)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:422)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:192)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.IllegalArgumentException: Unsupported configuration attributes: [ ROLE_ADMIN]
at org.springframework.security.access.intercept.AbstractSecurityInterceptor.afterPropertiesSet(AbstractSecurityInterceptor.java:154)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1398)
... 27 more
-
<security:intercept-url pattern="/**" access="ROLE_USER, ROLE_ADMIN" />
हालांकि इस निम्न त्रुटि फेंकता यदि निर्दिष्ट है कि केवल एक भूमिका किसी भी यूआरएल तक पहुंच सकती है तो यह ठीक है (या तो भूमिका के लिए ठीक है)। जिस क्रम में मैं भूमिका निर्दिष्ट करता हूं उसे बदलना कोई फर्क नहीं पड़ता है। ऐसा लगता है कि स्प्रिंग सिक्योरिटी 3 में कुछ बदल गया है जो अब निर्दिष्ट मल्टीप्ल एक्सेस एक्सेस को संभाल नहीं सकता है।
मैंने सफलतापूर्वक स्प्रिंग सिक्योरिटी 2 के साथ काम कर लिया है, और वस्तुतः एक ही कॉन्फ़िगरेशन का उपयोग कर रहा हूं। कोई विचार?
मेरे सुरक्षा कॉन्फ़िग फ़ाइल नीचे सूचीबद्ध है -
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd">
<security:http auto-config="true" access-denied-page="/denied.jsp" >
<security:form-login
default-target-url="/app/home"
always-use-default-target="true" />
<security:intercept-url pattern="/**" access="ROLE_USER, ROLE_ADMIN" />
<security:logout invalidate-session="true" logout-url="/logout" logout-success-url="" />
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:jdbc-user-service data-source-ref="dataSource"
users-by-username-query='select "username", "password", "enabled"
from users where "username" = ?'
authorities-by-username-query='select "username", "authority" from user_roles where "username" = ?' />
</security:authentication-provider>
</security:authentication-manager>
</beans>
तेजा आप सही हैं, यह अल्पविराम के बाद रिक्त स्थान को संभाल नहीं सकता है। यह रिक्त स्थान के बिना ठीक काम करता है। – user223695
त्रुटि संदेश यह स्पष्ट करता है कि यह वास्तव में समस्या है: "असमर्थित कॉन्फ़िगरेशन विशेषताएँ: [ROLE_ADMIN]" –