سؤال

كيف لا أقوم بتثبيت أمان الربيع حتى أحتاج إلى ذلك؟

أنا أستخدم محرك تطبيق Google ، لذا فإن وقت بدء تشغيل تطبيق الويب الخاص بي مهم. في بعض الأحيان عندما يطلب المستخدم صفحة ، يجب عليهم الانتظار طوال الوقت لتطبيق تطبيق الويب الخاص بي قبل الحصول على استجابة (يسمى هذا طلب تحميل).

لا تتطلب صفحات معينة من تطبيقي أي مصادقة. بالنسبة لهذه الصفحات ، إذا كان الطلب هو طلب تحميل ، فأنا لا أريد أن يضطر المستخدم إلى الانتظار الإضافي ~ 1.5 ثانية حتى يتم إنشاء أمان سبرينغ.

لقد اكتشفت بالفعل كيفية تحميل جميع المكونات الأخرى في تطبيقي ، أمان الربيع هو الوحيد الذي لا أعرف كيف. أي شخص لديه فكرة؟

تحرير: إذا كان أي شخص يعرف كيفية تثبيت أمان الربيع من الكود بدلاً من استخدام ApplicationContext-security.xml ، فأعتقد أنه يمكنني معرفة كيفية تحميله.

هل كانت مفيدة؟

المحلول

حسنًا ، لقد اكتشفت ذلك أخيرًا. اضطررت إلى الفئة الفرعية org.springframework.web.context.ContextLoaderListener و org.springframework.web.filter.DelegatingFilterProxy لعدم فعل أي شيء حتى أتصل بأسلوب تنشيط عليها.

نصائح أخرى

الموصوفة هنا عملت بالنسبة لي:

... يمكنك حل هذه المشكلة مع أي LazyInittargetSource لـ UserDetailsService.

<bean id="userDetailsService" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="targetSource">
        <bean class="org.springframework.aop.target.LazyInitTargetSource">
            <property name="targetBeanName" value="targetUserDetailsService"/>
        </bean>
    </property>
</bean>

<bean id="targetUserDetailsService" class="MyCustomUserService" lazy-init="true">
    ....
</bean>

يمكنك التكوين <url-pattern>S of Spring Security Filter Mapping in web.xml لمطابقة الموارد المضمونة فقط (وكذلك صفحات تسجيل الدخول والموارد الأخرى التي تتطلب معالجة أمان الربيع) ، ولف المرشح الافتراضي مع الغلاف الكسول الخاص بك ، كما فعلت مع DispatcherServlet.

تعديل:يبدو أن المشكلة أكثر تعقيدًا مما كنت أعتقد. يمكنك أيضًا محاولة تحديد Security XML الخاص بك AS <beans default-lazy-init="true" ...>

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top