تغطي هذه المقالة طرقًا لدمج Shiro في تطبيقات الربيع.
يجعل توافق Java Bean من Shiro مثاليًا لتكوينه عبر Spring XML أو آليات التكوين الأخرى المستندة إلى الربيع. تتطلب تطبيقات Shiro مثيلًا لمدير أمان تطبيق Singleton (SecuriyManager). لاحظ أن هذا ليس بالضرورة مفردة ثابتة ، ولكن يجب على التطبيق استخدام مثيل واحد فقط ، بغض النظر عما إذا كان المفرد الثابت أم لا.
1. التطبيق المستقل
فيما يلي أسهل طريقة لتمكين مدير أمان تطبيق Singleton في تطبيقات الربيع:
<!-حدد عالم متصل بمصدر بيانات آمن للواجهة الخلفية:-> <bean id = "myrealm"> ... </bean> <bean id = "securityManager"> <!-هذا مكتوب بتطبيق عالم واحد. إذا كان هناك العديد من المجال ، فيمكنك استخدام خاصية "العوالم"-> <property name = "Realm" ref = "myrealm"/> </bean> <bean id = "LifecyClebeanpostProcessor"/> <!-لأبسط التكامل ، تمامًا مثل جميع الأساليب الثابتة في الأمن ، فإنه يعلق في جميع الحالات ، ويصدر بين الفاصوليا الأمنية باعتباره غناءًا ثابتًا. لكن لا تفعل هذا في تطبيق الويب. راجع قسم "تطبيق الويب" أدناه. -> <bean> <property name = "staticmethod" value = "org.apache.shiro.securityutils.setsecurityManager"/> <property name = "ediuments" ref = "securitymanager"/> </bean>
2. WEB Application
يتمتع Shiro بدعم كبير لتطبيقات الويب Spring. في تطبيق الويب ، يجب أن تمر جميع طلبات الويب المتاحة عبر مرشح Shiro. هذا المرشح قوي للغاية ويسمح بالتخصيص الخاص لأي سلسلة مرشح بناءً على تعبيرات مسار URL.
قبل Shiro 1.0 ، كان عليك استخدام نهج هجين في تطبيقات الويب Spring لتحديد مرشحات Shiro. جميع خصائص التكوين موجودة في web.xml. ولكن تحديد SecurityManager في spring.xml غير ودي بعض الشيء.
الآن ، في Shiro 1.0 أو أعلى ، تتم جميع تكوينات Shiro في الربيع XML ، والتي توفر آلية تكوين Spring أكثر قوة.
فيما يلي كيفية تكوين Shiro في تطبيق ويب قائم على الربيع:
web.xml
بالإضافة إلى بعض علامات الربيع الأخرى (ContextLoaderListener ، Log4JConfigListener ، إلخ) ، يتم أيضًا تعريف المرشحات التالية وترتيب المرشح:
<!- في ApplicationContext.xml ، اسم اسم المرشح "Shirofilter" Matches. -> <lipter> <filter-name> shirofilter </filter-name> <filter-class> org.springframework.web.filter.delegatingfilterproxy </filter-class> <Ing-param> <Param-name> targetfilterlterLiFecycle </ </ith-param> </ilter> ... <!-تأكد من ترشيح أي طلب تريده. /* التقاط جميع الطلبات. عادةً ما يتم تعريف خريطة المرشح هذه أولاً (قبل جميع الآخرين) ، مما يضمن أن يعمل Shiro في المرشحات اللاحقة في سلسلة المرشح:-> <filter mapping> <filter-name> shirofilter </filter-name> <url-patern>/*</url-patern> </filter-mapping>
ApplicationContext.xml
في ملف ApplicationContext.xml ، حدد SecurityManager و "shirofilter" التي تنطبق على الويب ، والتي سيتم الرجوع إليها في web.xml.
<bean id = "shirofilter"> <property name = "securityManager" ref = "securityManager"/> <!- حدد الخصائص التالية وفقًا للوضع المحدد: <property name = "loginurl" value = "/login.jsp"/> <property name = "suctionurl" -> <!-إذا تم الإعلان عن أي javax.servlet ، فإن خاصية "المرشحات" غير ضرورية-> <!-<property name = "filters"> <util: map> <intrade key = "analias" value-res = "somefilter"/> </util: map> </propert /admin/** = AUTHC ، أدوار [admin]/docs/** = authc ، perms [الوثيقة: قراءة]/** = AUTHC </value> </sopperation> </boan> <!- أي javax.servlet.filter Bean يمكن تحديده في السياق ، والتي سيتم التقاطها تلقائيًا من قبل "shirofilter". إذا لزم الأمر ، يمكنك الإضافة يدويًا/صريحًا إلى خريطة "المرشحات" الخاصة بـ Shirofilter. -> <bean id = "somefilter"/> <bean id = "otherfilter"> ... </bean> ... <bean id = "securitymanager"> <!-هذا مكتوب بتطبيق عالم واحد. إذا كان هناك العديد من المجال ، يمكنك استخدام خاصية "العوالم". -> <property name = "Realm" ref = "myrealm"/> <!-في حالة الاعتراف ، تنطبق جلسة حاوية servlet. بعد عدم التخلص من هذا السطر ، استخدم جلسة Shiro الأصلية-> <!-<property name = "sessionmode" value = "native"/>-> </bole> <bean id = "lifecyclebeanpostprospor
مكّن شيرو التعليقات التوضيحية
في تطبيق ما ، قد تحتاج إلى استخدام تعليقات شيرو لفحوصات الأمان (على سبيل المثال ، REQUIREROLE ، @requirepermission ، إلخ
<bean يعتمد على = "LifecycleBeanPostProcessor"/> <bean> <property name = "SecurityManager" ref = "securityManager"/> </bean>
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.