Эта статья охватывает способы интеграции SHIRO в весенние приложения.
Совместимость Java Bean от Shiro делает его идеальным для настройки с помощью Spring XML или других механизмов конфигурации на основе пружины. Приложения Широ требуют экземпляра приложения Singleton Security Manager (Securiymanager). Обратите внимание, что это не обязательно статический синглтон, но приложение должно использовать только один экземпляр, независимо от того, является ли это статичным синглтоном или нет.
1. Стандартное применение
Вот самый простой способ включить заявки на Singleton Security Manager в весенних приложениях:
<!-Определите царство, подключенное к бэкэнд-защищенному источнику данных:-> <bean id = "myRealm"> ... </bean> <Bean Id = "SecurityManager"> <!-Это записано одним приложением REALM. Если есть несколько сфер, вы можете использовать свойство «царства»-> <name = "refm" ref = "myRealm"/> </bean> <bean id = "LifeCyclebeanpostProcessor"/> <!-Для простейшей интеграции, как и все статические методы в SecurityUtils, он применяет во всех случаях, заявляя о том, как руководитель Security Manager Bean. Но не делайте этого в веб -приложении. См. Раздел «Веб -приложение» ниже. -> <Bean> <name = name = "staticmethod" value = "org.apache.shiro.securityutils.setecuritymanager"/> <name = "arguments" ref = "securitymanager"/> </bean>
2. ВЕБ -заявление
Широ имеет отличную поддержку для весенних веб -приложений. В веб -приложении все доступные веб -запросы должны пройти через фильтр Shiro. Этот фильтр очень мощный и обеспечивает специальную настройку любой цепочки фильтров на основе выражений пути URL.
До Shiro 1.0 вам пришлось использовать гибридный подход в весенних веб -приложениях для определения фильтров Широ. Все свойства конфигурации находятся в web.xml. Но определение SecurityManager Spring.xml немного недружелюбно.
Теперь в Shiro 1.0 или выше все конфигурации Shiro выполняются в Spring XML, которая обеспечивает более надежный механизм конфигурации пружины.
Вот как настроить Shiro в веб-приложении на основе Spring:
web.xml
В дополнение к некоторым другим пружинным тегам (ContextLoaderListener, Log4jConfigListener и т. Д.) Также определены следующие фильтры и отображения фильтров:
<!- В ApplicationContext.xml имени имени фильтра «Широфильтер» сопоставки бобов. -> <Filter> <Filter-name> shirofilter </filter-name> <filter-class> org.springframework.web.filter.delegatingfilterproxy </filter-class> <init-param> </param-name> targetfilterlifecycle </param-name> </param-value> true </param-value> param-value> true </param-value> </param-value> </param-value> </param-value> </param-value> </param-value> </param-value> </param-value> </init-param> </filter> ... <!-Убедитесь, что любой запрос, который вы хотите, можно отфильтровать. /* Захватить все запросы. Как правило, эта карта фильтров определяется сначала (перед всеми остальными), гарантируя, что Широ работает в последующих фильтрах в цепочке фильтра:-> <url-pathern>/*</url-pattern> </filter-name> <url-pattern>/*</url-pattern> </filter> <url-pattern>/*</url-pattern> </filter>
ApplicationContext.xml
В файле ApplicationContext.xml определите бобы SecurityManager и «Shirofilter», которые применимы к Интернету, которые будут ссылаться на Web.xml.
<bean id = "shirofilter"> <property name = "securityManager" ref = "SecurityManager"/> <!- Определите следующие свойства в соответствии с конкретной ситуацией: <name = "loginurl" value = "/login.jsp"/> <name = "succepurl" value = "/home.jsp"/> <properation nelivery = "unauthorizedUrisur". -> <!-Если какой-либо javax.servlet был объявлен, свойство «Фильтры» ненужнее-> <!-<name = "filters"> <util: map> <inpit key = "analias" /admin/** = authc, роли [admin]/docs/** = authc, perms [document: read]/** = authc </value> </property> </bean> <!- любой Javax.servlet.filter Bean, который может быть определен в контексте, который будет автоматически захвачен «Shirofilter» Bean выше и используется «Filterchain». При необходимости вы можете вручную/явно добавить к карте «фильтров» широфильтера. -> <bean id = "somefilter"/> <bean id = "notherfilter"> ... </bean> ... <bean id = "SecurityManager"> <!-Это написано одним приложением для сферы. Если есть несколько сфер, вы можете использовать свойство «царства». -> <name = "realm" ref = "myRealm"/> <!-В случае распознавания применимо сеанс контейнера сервлета. После расстановки этой строки используйте нативную сеанс Широ-> <!-<name = "sessionMode" value = "/>-> </bean> <bean id =" LifeCyclebeanpostProcessor "/> <!-Используйте источник фоновых данных, настраивая подкласс Shiro Realm-> <Bean Id =" MyRealm "> ... </bean> </bean> </bean> </bean>
Широ включил аннотации
В приложении вам может потребоваться использовать аннотации Широ для проверки безопасности (например, @RequiresRole, @Requirespermission и т. Д.
<bean зависит от = "lifecyclebeanpostprocessor"/> <bean> <name = "securitymanager" ref = "securitymanager"/> </bean>
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.