이 기사는 Shiro를 Spring 기반 응용 프로그램에 통합하는 방법을 다룹니다.
Shiro의 Java Bean 호환성은 스프링 XML 또는 기타 스프링 기반 구성 메커니즘을 통해 구성하는 데 이상적입니다. Shiro의 응용 프로그램에는 응용 프로그램 Singleton Security Manager (Securiymanager) 인스턴스가 필요합니다. 이것은 반드시 정적 싱글 톤 일 필요는 없지만 응용 프로그램은 정적 싱글 톤인지 여부에 관계없이 하나의 인스턴스 만 사용해야합니다.
1. 독립형 응용 프로그램
다음은 Spring Applications에서 애플리케이션 싱글 톤 보안 관리자를 활성화하는 가장 쉬운 방법입니다.
<!-백엔드 보안 데이터 소스에 연결된 영역을 정의하십시오.-> <bean id = "myRealm"> ... </bean> <bean id = "SecurityManager"> <!-이것은 단일 영역 응용 프로그램에 의해 작성됩니다. 여러 영역이있는 경우 "Realms"속성-> <property name = "realm"ref = "myRealm"/> </bean> <bean id = "LifeCycleBeanPostProcessor"/> <!-보안 유자의 모든 정적 방법과 마찬가지로 모든 경우에 보안 관리자를 대상으로 선언 할 수 있습니다. 그러나 웹 응용 프로그램에서는 이것을하지 마십시오. 아래의 "웹 응용 프로그램"섹션을 참조하십시오. -> <bean> <property name = "staticMethod"value = "org.apache.securityUtils.setSecurityManager"/> <property name = "argument"ref = "securityManager"/</bean>
2. 웹 응용 프로그램
Shiro는 Spring Web Applications를 크게 지원합니다. 웹 응용 프로그램에서 사용 가능한 모든 웹 요청은 Shiro 필터를 통과해야합니다. 이 필터는 매우 강력하며 URL 경로 표현식을 기반으로 모든 필터 체인을 특별히 사용자 정의 할 수 있습니다.
Shiro 1.0 이전에는 Shiro의 필터를 정의하기 위해 Spring Web Applications에서 하이브리드 접근 방식을 사용해야했습니다. 모든 구성 속성은 web.xml에 있습니다. 그러나 Spring.xml에서 SecurityManager를 정의하는 것은 약간 비우호적입니다.
이제 Shiro 1.0 이상에서 모든 Shiro 구성은 Spring XML에서 수행되므로보다 강력한 스프링 구성 메커니즘을 제공합니다.
스프링 기반 웹 응용 프로그램에서 Shiro를 구성하는 방법은 다음과 같습니다.
web.xml
다른 스프링 태그 (ContextLoaderListener, log4jconfiglistener 등) 외에도 다음 필터와 필터 매핑도 정의됩니다.
<!- ApplicationContext.xml에서 필터 이름 "Shirofilter"Bean Matches의 이름입니다. -> <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> </init-param> </filter> ... <!-원하는 요청을 필터링 할 수 있는지 확인하십시오. /* 모든 요청을 캡처합니다. 일반적 으로이 필터 맵은 먼저 (다른 모든 것보다 먼저) 정의되어 Shiro가 필터 체인에서 후속 필터에서 작동하는지 확인합니다 .-> <Filter-Name> Shirofilter </filter-name> <Url-Pattern>/*</url-pattern> </filter-Mapping>
ApplicationContext.xml
ApplicationContext.xml 파일에서 Web.xml에서 참조 될 웹에 적용 가능한 SecurityManager 및 "ShiroFilter"Bean을 정의하십시오.
<bean id = "shirofilter"> <property name = "securitymanager"ref = "securitymanager"/> <!-특정 상황에 따라 다음 속성을 정의하십시오. <!-javax.servlet이 선언 된 경우 "필터"속성이 불필요합니다-> <!-<속성 이름 = "필터"> <util : map> <enterd key = "ana a a a aventias"value-ref = "somefilter"/> </util : map> </property>-> <property name = "filterchain initions"> <value> < = authc, 역할 [admin]/docs/** = authc, perm [document : read]/** = authc </valuec> </property> </bean> <!- 컨텍스트에서 정의 할 수있는 javax.servlet.filter bean 위의 "shirofilter"Bean에 의해 자동으로 캡처 될 수 있습니다. 필요한 경우 Shirofilter의 "필터"맵에 수동으로/명시 적으로 추가 할 수 있습니다. -> <bean id = "somefilter"/> <bean id = "aerverfilter"> ... </bean> ... <bean id = "SecurityManager"> <!-이것은 단일 영역 응용 프로그램에 의해 작성됩니다. 여러 영역이있는 경우 "Realms"속성을 사용할 수 있습니다. -> <property name = "realm"ref = "myRealm"/> <!-인식의 경우 서블릿 컨테이너의 세션이 적용됩니다. 이 줄을 사용하지 않은 후에는 Shiro의 기본 세션-> <!-<property name = "sessionmode"value = "avire"/>-> </bean> <bean id = "lifecyclebeanpostprocessor"/> <!-Shiro Realm의 서브 클래스를 사용자 정의하여 배경 데이터 소스를 사용하여 배경 데이터 소스를 사용하십시오. ... </bean>.
Shiro는 주석을 활성화했습니다
애플리케이션에서는 보안 검사에 Shiro의 주석을 사용해야 할 수도 있습니다 (예 : @requiresrole, @requirespermission 등.이를 위해서는 적절한 주석이 달린 클래스를 스캔하고 필요한 경우 Shiro의 Spring AOP 통합이 필요합니다.이 두 가지 주석을 활성화 하여이 두 Bean 정의를 ApplicationContext.xml에 추가하는 방법 :
<bean expends-on = "LifeCycleBeanPostProcessor"/> <ean> <속성 이름 = "SecurityManager"ref = "SecurityManager"/</bean>
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.