综合二区_欧美成人综合_欧美成人二区_a黄视频_亚洲视频在线播放_一区二区三区视频免费看

µ±Ç°Î»ÖãºÊ×Ò³ > ÍøÕ¾¾ÉÀ¸Ä¿ > ѧϰ԰µØ > Éè¼ÆÈí¼þ½Ì³Ì > acegi²Î¿¼ÊÖ²á(v1.0.4)[Òë]-µÚÁùÕ ͨÓÃÈÏÖ¤·þÎñ

acegi²Î¿¼ÊÖ²á(v1.0.4)[Òë]-µÚÁùÕ ͨÓÃÈÏÖ¤·þÎñ
2010-01-13 23:25:27  ×÷Õß:  À´Ô´:
µÚÁùÕÂ. ͨÓÃÈÏÖ¤·þÎñ
6.1. Mechanisms, Providers ºÍ Entry Points
Èç¹ûÄãʹÓÃAcegi SecurityÌṩµÄÈÏÖ¤·½·¨£¬ÄÇôͨ³£ÄãÐèÒªÅäÖÃÒ»¸öweb filter£¬Ò»¸öAuthenticationProvider
ÒÔ¼°AuthenticationEntryPoint¡£ÔÚ±¾½ÚÎÒÃǽ«Òªä¯ÀÀÒ»¸öʾÀýÓ¦Óã¬ËüÐèÒªÖ§³Ö»ùÓÚformµÄÈÏÖ¤£¨ÀýÈçÌṩ¸øÓû§µÇ¼µÄHTMLÒ³Ãæ£©ÒÔ¼°»ù´¡ÈÏÖ¤£¨ÀýÈçweb service»òÕßÀàËÆµÄ¿ÉÒÔ·ÃÎÊÊܱ£»¤×ÊÔ´£©¡£
 
ÔÚweb.xmlÖУ¬Õâ¸öÓ¦ÓÃÐèÒªÒ»¸öµ¥¶ÀµÄAcegi Security filterÀ´Ê¹ÓÃFilterChainProxy¡£¼¸ºõËùÓеÄAcegi SecurityÓ¦Óö¼ÓÐÒ»¸öÀàËÆµÄÏ¿´ÆðÀ´ÏóÏÂÃæÕâÑù£º
 
 
xml ´úÂë
 
  1. <filter>  
  2. <filter-name>Acegi Filter Chain Proxy</filter-name>  
  3. <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>  
  4. <init-param>  
  5. <param-name>targetClass</param-name>  
  6. <param-value>org.acegisecurity.util.FilterChainProxy</param-value>  
  7. </init-param>  
  8. </filter>  
  9. <filter-mapping>  
  10. <filter-name>Acegi Filter Chain Proxy</filter-name>  
  11. <url-pattern>/*</url-pattern>  
  12. </filter-mapping>  
 
ÉÏÊöÉùÃ÷½«Ê¹Ã¿¸öwebÇëÇó¶¼Òª¾­¹ýAcegi SecurityµÄFilterChainProxy¡£ÕýÈçÔÚ±¾ÊÖ²áµÄfilterÄǽÚÖÐËù˵£¬FilterChainProxyÊÇÒ»¸öͨÓÃÀ࣬ËüʹµÃwebÇëÇó°´ÕÕURLģʽ±»·¢Ë͵½²»Í¬µÄfilter¡£ÄÇЩ±»Î¯ÅɵÄfilterÊÇÓÉapplication context¹ÜÀíµÄ£¬Òò´ËËüÃÇ¿ÉÒÔÏíÊÜÒÀÀµ×¢ÉäµÄºÃ´¦¡£ÎÒÃÇÀ´¿´¿´ÔÚÄãµÄapplication contextÖÐFilterChainProxyµÄ¶¨Òå»áÊÇʲôÑùµÄ£º
 
 
xml ´úÂë
 
  1. <bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">  
  2. <property name="filterInvocationDefinitionSource">  
  3. <value>  
  4. CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON   
  5. PATTERN_TYPE_APACHE_ANT   
  6. /**=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,basicProcessingFilter,securityContextHolderAwareRequestFilter,</value>  
  7. </property>  
  8. </bean>  
 
ÔÚÄÚ²¿£¬Acegi Security»áʹÓÃPropertyEditorÀ´½«ÉÏÊöXMLƬ¶ÎÖеÄ×Ö·û´®×ª»¯ÎªÒ»¸öFilterInvocationDefinitionSource¶ÔÏó¡£ÔÚÕâ¸ö½×¶ÎÐèҪעÒâµÄÊÇ£¬Ò»ÏµÁеÄfilter»á°´ÕÕ¶¨ÒåµÄ˳ÐòÔËÐУ¬²¢ÇÒÕâЩfilterʵ¼Ê¾ÍÊÇapplication contextÖеÄbeanµÄ<bean id>¡£ËùÒÔ£¬ÔÚÎÒÃǵÄÀý×ÓÖУ¬»áÔÚapplication context³öÏÖÁíÍâһЩbean£¬ËüÃǻᱻÃüÃûΪhttpSessionContextIntegrationFilter, logoutFilter µÈ¡£Filter³öÏÖµÄ˳Ðò»áÔÚÊÖ²áÖÐfilterÄÇÒ»½ÚÌÖÂÛ£¬ËäÈ»ÉÏÊöµÄÀý×ÓÖÐËüÃÇÊÇÕýÈ·µÄ¡£
 
ÔÚÎÒÃǵÄÀý×ÓÖУ¬ÎÒÃÇʹÓÃÁËAuthenticationProcessingFilterºÍBasicProcessingFilter¡£ËüÃÇ·Ö±ð¶ÔÓ¦ÁË»ùÓÚformµÄÈÏÖ¤ºÍBASIC HTTP header-basedÈÏÖ¤µÄ“ÈÏÖ¤»úÖÆ”£¨ÎÒÃÇÔÚÊÖ²áµÄÇ°Ãæ²¿·ÖÌÖÂÛÁËÈÏÖ¤»úÖÆ°çÑݵĽÇÉ«£©¡£Èç¹ûÄã¼È²»Ê¹ÓÃformÒ²²»Ê¹ÓÃBASICÈÏÖ¤£¬¾Í²»ÐèÒª¶¨ÒåÕâЩbeanÁË¡£È¡¶ø´úÖ®µÄÊÇÄãÒª¶¨Òå¶ÔÓ¦ÄãËùÐèÒªµÄÈÏÖ¤»·¾³µÄfilter£¬ÀýÈçDigestProcessingFilter »òÕßCasProcessingFilter¡£Çë¶ÔÕÕÊÖ²áÖжÔÓ¦µÄÕ½ÚÀ´Á˽âÈçºÎÅäÖÃÕâЩÈÏÖ¤»úÖÆ¡£
 
ÈÃÎÒÃÇ»ØÒäһϣ¬ÔÚHttpSessionContextIntegrationFilterÖб£´æÁËÿ¸öHTTP sessionµ÷ÓÃÖеÄSecurityContext¡£ÕâÒâζ×ÅÈÏÖ¤»úÖÆÖ»»áÔÚprincipal×î³õ³¢ÊÔÈÏÖ¤µÄʱºò±»Ê¹ÓÃÒ»´Î¡£ÔÚÓàϵÄʱ¼äÄÚ£¬ÈÏÖ¤»úÖÆÖ»ÊǾ²¾²µÄ´ýÔÚÄÇÀ½«ÇëÇó·¢ÍùfilterÁ´ÖеÄÏÂÒ»¸öfilter¡£Õâ¸ö»ùÓÚʵ¼ÊµÄÐèÇóÔ´ÓÚÕâÑùµÄÒ»¸öÊÂʵ£¬ºÜÉÙÓÐÈÏ֤ʵÏÖÔÚÿһ¸ö£¬Ã¿Ò»´ÎµÄµ÷ÓõÄʱºò¶¼»á½øÐÐÈÏÖ¤£¨BASICÈÏÖ¤ÊÇÒ»¸öÖµµÃ×¢ÒâµÄÀýÍ⣩£¬µ«ÊÇÈç¹ûÒ»¸öpricipalÔÚ×î³õµÄÈÏÖ¤²½ÖèÖ®ºóÕʺű»È¡ÏûÁË£¬»òÕß±»½ûÓÃÁË£¬»òÕß±»ÐÞ¸ÄÁË£¨ÀýÈçGrantedAuthority[]ÖÐÔö¼Ó»òÕß¼õÉÙ£©»áÔõôÑùÄØ£¿ÈÃÎÒÃÇÀ´¿´¿´ÏÖÔÚÕâЩÇé¿öÊÇÈçºÎ´¦ÀíµÄ¡£
 
Ç°ÃæÒѾ­½éÉÜÁ˰²È«¶ÔÏóµÄÖ÷ÒªÈÏÖ¤provider AbstractSecurityInterceptor¡£Õâ¸öÀàÐèÒªÄܹ»·ÃÎÊÒ»¸öAuthenticationManager¡£ËüͬʱÓиö¿ÉÑ¡ÅäÖÿÉÒÔÉ趨һ¸öÈÏÖ¤¶ÔÏóÿ´Î°²È«¶ÔÏóµ÷ÓõÄʱºòÊÇ·ñÐèÒªÖØÐÂÈÏÖ¤¡£Èç¹ûAuthentication.isAuthenticated()·µ»Øtrue£¬ÄÇôËüĬÈÏÔÚSecurityContextHolderÖеÄÈÏÖ¤¶ÔÏóÊÇÒÑÈÏÖ¤µÄ¡£ÕâÑù×ö¶ÔÓÚÌá¸ßÐÔÄÜÊǷdz£ºÃµÄ£¬µ«ÊǶÔÓÚ¼´Ê±µÄÈÏÖ¤ÑéÖ¤ÊDz»ÀíÏëµÄ¡£ÔÚÕâÑùµÄÇé¿öÏÂÄã¿ÉÄÜÐèÒª½«AbstractSecurityInterceptor.alwaysReauthenticateÊôÐÔÉèÖÃΪtrue¡£
 
Äã¿ÉÄÜ»áÎÊ×Ô¼º“Õâ¸öAuthenticationManagerÊÇʲô£¿”ÎÒÃÇ֮ǰûÓмû¹ýËü£¬µ«ÊÇÎÒÃÇÔø¾­ÌÖÂÛ¹ýAuthenticationProviderµÄ¸ÅÄî¡£·Ç³£¼òµ¥£¬AuthenticationManager¸ºÔðÔÚAuthenticationProviderÁ´Ö®¼ä´«µÝÇëÇó¡£Ëü·Ç³£ÏóÎÒÃÇ֮ǰÌÖÂÛ¹ýµÄfilterÁ´£¬ËäÈ»ÓÐһЩ²»Í¬¡£Acegi SecurityÖ»ÌṩÁËÒ»¸öAuthenticationManagerʵÏÖ£¬Òò´ËÈÃÎÒÃÇ¿´¿´¶ÔÓÚÎÒÃÇÕâÕµÄÀý×Ó£¬ËüÊÇÈçºÎÅäÖõģº
 
xml ´úÂë
 
  1. <bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">  
  2. <property name="providers">  
  3. <list>  
  4. <ref local="daoAuthenticationProvider"/>  
  5. <ref local="anonymousAuthenticationProvider"/>  
  6. <ref local="rememberMeAuthenticationProvider"/>  
  7. </list>  
  8. </property>  
  9. </bean>  
 
ÔÚÕâ¸öʱºò£¬¿ÉÄÜÖµµÃÌáµ½µÄÊÇÄãµÄÈÏÖ¤»úÖÆ£¨Í¨³£ÊÇfilter£©Ò²±»×¢ÈëÁËÒ»¸öAuthenticationManagerµÄÒýÓá£ËùÒÔºÍÈÏÖ¤»úÖÆ¶¼»áʹÓÃÉÏÊöµÄProviderManagerÀ´ÂÖѯһϵÁеÄAuthenticationProvider¡£
 
ÔÚÎÒÃÇÀý×ÓÖÐÓÐÈý¸öprovider¡£ËüÃǰ´ÕÕÉÏÊöµÄ˳Ðòµ÷Óã¨Ê¹ÓÃlist¶ø²»ÊÇsetÀ´ÏÔʾÊǰ´ÕÕ˳Ðòµ÷Óõģ©£¬Ã¿¸öprovider¶¼Äܹ»³¢ÊÔÈÏÖ¤£¬»òÕß½ö½ö·µ»ØÒ»¸önullÀ´Ìø¹ýÈÏÖ¤¡£Èç¹ûËùÓеÄʵÏÖ¶¼·µ»Ønull£¬ProviderManager»áÅ׳öÒ»¸öÏàÓ¦µÄÒì³£¡£Èç¹ûÄãÏëÁ˽â¸ü¶àchaining providersµÄÐÅÏ¢£¬Çë²ÎÔÄProviderManagerµÄJavaDoc¡£
 
authentication mechanismʹÓõÄÄÇЩproviderÓÐʱºòÊÇ¿ÉÒÔ»¥»»µÄ£¬¶øÓÐʱºòËüÃÇÓÖÒÀÀµÓÚÌØ¶¨µÄauthentication mechanism¡£ÀýÈ磬DaoAuthenticationProviderÖ»ÐèÒªÒ»¸ö»ùÓÚ×Ö·û´®µÄÓû§ÃûºÍÃÜÂë¡£Èô¸É¸öÈÏÖ¤»úÖÆ»á²úÉú»ùÓÚ×Ö·û´®µÄÓû§ÃûºÍÃÜÂëµÄ¼¯ºÏ£¬°üÀ¨£¨µ«²»ÏÞÓÚ£©BASIC ºÍ form ÈÏÖ¤¡£Í¬Ê±£¬ÓÐЩÈÏÖ¤»úÖÆ»á²úÉúÒ»¸öÖ»ÄܺÍÌØ¶¨ÀàÐ͵ÄAuthenticationProvider½»»¥µÄÈÏÖ¤ÇëÇó¶ÔÏó¡£Ò»¸öÕâÖÖÒ»¶ÔÒ»Ó³ÉäµÄÀý×ÓÊÇJA-SIG CAS£¬ËüʹÓÃservice ticketµÄ¸ÅÄֻÄܱ»Common Authentication Services CasAuthenticationProviderÈÏÖ¤¡£Ò»¸ö¸ü¼ÓÉîÈëµÄÒ»¶ÔÒ»Ó³ÉäµÄÀý×ÓÊÇLDAPÈÏÖ¤»úÖÆ£¬ËüÖ»ÄÜÓÉLdapAuthenticationProvider´¦Àí¡£ÕâÖÖÌØ¶¨µÄ¶ÔÓ¦¹ØÏµÔÚÿ¸öÀàµÄJavaDocÒÔ¼°ÔÚ±¾ÊÖ²áµÄÌØ¶¨ÈÏÖ¤·½·¨Õ½ÚÖÐÓÐÏêϸ˵Ã÷¡£Äã²»Óõ£ÐÄÕâЩʵÏÖµÄϸ½Ú£¬ÒòΪÈç¹ûÄãÍü¼Ç×¢²áÒ»¸öºÏÊʵÄprovider£¬ÄãÔÚ³¢ÊÔÈÏ֤ʱֻ»áÊÕµ½Ò»¸öProviderNotFoundExceptionÒì³£¡£
 
µ±ÄãÔÚFilterChainProxyÖÐÕýÈ·ÅäÖÃÁËÈÏÖ¤»úÖÆ£¬²¢ÇÒÈ·±£×¢²áÁ˶ÔÓ¦µÄAuthenticationProvider£¬ÄãµÄ×îºóÒ»²½ÊÇÅäÖÃÒ»¸öAuthenticationEntryPoint¡£»ØÒäÒ»ÏÂÔçÏÈÎÒÃÇÌÖÂÛ¹ýµÄExceptionTranslationFilterµÄ½ÇÉ«£¬µ±Ò»¸ö»ùÓÚHTTPµÄÇëÇóÊÕµ½Ò»¸öHTTPÍ·»òÕßÒ»¸öHTTPÖØ¶¨ÏòÒÔ¿ªÊ¼ÈÏ֤ʱËü±»Ê¹Ó᣼ÌÐøÎÒÃÇÔçÏȵÄÀý×Ó£º
 
xml ´úÂë
 
  1. <bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter">  
  2. <property name="authenticationEntryPoint"><ref  
  3. local="authenticationProcessingFilterEntryPoint"/></property>  
  4. <property name="accessDeniedHandler">  
  5. <bean class="org.acegisecurity.ui.AccessDeniedHandlerImpl">  
  6. <property name="errorPage" value="/accessDenied.jsp"/>  
  7. </bean>  
  8. </property>  
  9. </bean>  
  10. <bean id="authenticationProcessingFilterEntryPoint"  
  11. class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint">  
  12. <property name="loginFormUrl"><value>/acegilogin.jsp</value></property>  
  13. <property name="forceHttps"><value>false</value></property>  
  14. </bean>  
 
×¢Òâµ½ExceptionTranslationFilterÐèÒªÁ½¸öЭ×÷Õß¡£µÚÒ»¸öAccessDeniedHandlerImpl£¬Ê¹ÓÃÒ»¸öRequestDispatcherµ¼ÏòÏÔÊ¾ÌØ¶¨µÄ·ÃÎʾܾøµÄ´íÎóÒ³Ãæ¡£ÎÒÃÇʹÓÃforwadËùÒÔSecurityContextHolderÖÐÈÔÈ»±£ÁôprincipalµÄÏêϸÐÅÏ¢£¬ÕâЩ¶ÔÓÚÏÔʾ¸øÓû§À´ËµÊÇÓÐÓõģ¨ÔÚAcegi SecurityµÄÀϰ汾ÖУ¬ÎÒÃÇÒÀÀµrervletÈÝÆ÷À´´¦Àí403´íÎóÐÅÏ¢£¬Ëüȱ·¦Õâ¸öÓÐÓõÄÉÏÏÂÎÄÐÅÏ¢£©¡£AccessDeniedHandlerImplͬʱ½«»á½«HTTPÍ·ÉèÖÃΪ403£¬ËüÊÇ·ÃÎʾܾøµÄÕýʽ´íÎó´úÂë¡£ÖÁÓÚAuthentionEntryPoint£¬ÕâÀïÉèÖÃÈç¹ûÒ»¸öδÊÜÈÏÖ¤µÄprincipal³¢ÊÔÖ´ÐÐÒ»¸öÊܱ£»¤µÄ²Ù×÷ʱ£¬ÎÒÃÇÐèÒªÖ´ÐÐÄÇЩ¶¯×÷¡£ÒòΪÔÚÎÒÃǵÄÀý×ÓÖÐҪʹÓûùÓÚformµÄÈÏÖ¤£¬Òò´ËÎÒÃÇÉ趨AuthenticationProcessinFilterEntryPointÒÔ¼°µÇÂ¼Ò³ÃæµÄURL¡£ÄãµÄÓ¦ÓÃϵͳͨ³£Ö»ÐèÒªÒ»¸öentry point£¬²¢ÇÒ´ó¶àÊýµÄÈÏÖ¤·½·¨¶¼¶¨ÒåÁË×Ô¼ºÌØÓеÄAuthenticationEntryPoint¡£Ã¿¸öÈÏÖ¤·½Ê½Ëù¶ÔÓ¦µÄÌØ¶¨entry pointµÄÏêϸÇé¿ö»áÔÚ±¾ÊÖ²áÌØ¶¨µÄÈÏÖ¤·½·¨Õ½ÚÖнéÉÜ¡£
6.2. UserDetails ºÍ Associated Types
ÕýÈçÔÚµÚÒ»²¿·ÖÖÐÌáµ½µÄ£¬´ó¶àÊýÈÏÖ¤providerÒªÓõ½UserDetails ºÍUserDetailsService ½Ó¿Ú¡£ºóÃæÄǸö½Ó¿ÚÖ»°üº¬Ò»¸ö·½·¨£º
 
 
java ´úÂë
 
  1. public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException,   
  2. DataAccessException;  
 
 
·µ»ØÖµUserDetailsÊÇÒ»¸ö½Ó¿Ú£¬ËüÌṩÁËÈô¸É¸ögetter±£Ö¤·µ»Ø·ÇnullÖµ£¬ÀýÈçÓû§Ãû£¬ÃÜÂ룬ÊÚÓèµÄȨÏÞÒÔ¼°Óû§ÊÇÆôÓû¹ÊǽûÓÃ״̬¡£´ó²¿·ÖÈÏÖ¤provider¶¼»áʹÓÃÒ»¸ö£¬¼´Ê¹ËüÔÚÈÏÖ¤ÅжϹý³ÌÖÐʵ¼Ê²¢²»Ê¹ÓÃÓû§ÃûºÍÃÜÂ롣ͨ³£ÕâЩproviderÖ»»áʹÓ÷µ»ØµÄUserDetailsÖеÄGrantedAuthority[]ÐÅÏ¢£¬ÒòΪÓÐЩϵͳ£¨ÀýÈçLDAP »ò X509 »ò CAS£©ÒѾ­³Ðµ£ÁËʵ¼ÊµÄÉí·ÝÑéÖ¤µÄÔðÈΡ£
 
Acegi SecurityÌṩÁËÒ»¸öUserDetailsµÄʵÌåÀàʵÏÖ£­User¡£Acegi SecurityÓû§ÐèҪȷ¶¨Ê²Ã´Ê±ºòʵÏÖUserDetailsServiceÒÔ¼°·µ»ØÊ²Ã´ÑùµÄUserDetailsʵÌåÀࡣͨ³££¬Ö±½ÓʹÓÃUserÀà»òÕ߼̳ÐUserÀà¾Í¿ÉÒÔÁË£¬¾¡¹ÜÓÐÒ»Ð©ÌØÊâÇé¿ö(ÀýÈç object relational mappers)£¬ÐèÒªÓû§´ÓͷдËûÃÇ×Ô¼ºµÄUserDetailsʵÏÖ¡£ÕâÖÖÇé¿öҲʱÓз¢Éú£¬Óû§Ö»Òª·µ»ØËûÃÇÕý³£µÄ´ú±íϵͳÓû§µÄÁìÓò¶ÔÏó¾Í¿ÉÒÔÁË¡£ÌرðÊÇUserDetails¾­³£±»ÓÃÀ´´æ´¢¶îÍâµÄprincipalÏà¹ØÊôÐÔ£¨ÀýÈçËûÃǵĵ绰ºÅÂëÒÔ¼°emailµØÖ·£©£¬ÕâÑùËüÃÇ¿ÉÒÔºÜÈÝÒ×±»webÊÓͼʹÓá£
 
ÌØ¶¨µÄUserDetailsServiceʵÏÖÆðÀ´ÊǺܼòµ¥µÄ£¬ËüÓ¦¸ÃºÜÈÝÒ×ÓÉÓû§À´Ñ¡Ôñ³Ö¾Ã»¯²ßÂÔÀ´»ñÈ¡ÈÏÖ¤ÐÅÏ¢¡£Ëµµ½ÕâÀAcegi Securityȷʵ°üº¬ÁËһЩÓÐÓõĻù´¡ÊµÏÖ£¬ÏÂÃæÈÃÎÒÃÇ¿´Ò»Ï¡£
 
6.2.1. In-Memory ÈÏÖ¤
ËäÈ»Óû§¿ÉÒÔ´´½¨Ò»¸ö¶¨ÖƵÄUserDetailsServiceʵÏÖÀ´´ÓÒ»¸ö³Ö¾Ã»¯ÒýÇæÖлñÈ¡ÐÅÏ¢£¬ºÜ¶àÓ¦Óò»ÐèÒªÕâÖÖ¸´ÔÓÐÔ¡£ÌرðÊÇÈç¹ûÄãÕýÔÚ½øÐпìËÙÔ­ÐÍ¿ª·¢»òÕ߸տªÊ¼¼¯³ÉAcegi Security£¬µ±Äã²»ÐèÒª»¨·Ñʱ¼äÀ´½øÐÐÊý¾Ý¿âÅäÖûòÕßдUserDetailsServiceµÄʵÏÖ¡£ÕâÖÖÇé¿ö֮ϣ¬ÄãÓÐÒ»¸ö¼òµ¥µÄÑ¡Ôñ£¬¾ÍÊÇÅäÖÃInMemoryDaoImplʵÏÖ¡£
 
 
xml ´úÂë
 
  1. <bean id="inMemoryDaoImpl" class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">  
  2. <property name="userMap">  
  3. <value>  
  4. marissa=koala,ROLE_TELLER,ROLE_SUPERVISOR   
  5. dianne=emu,ROLE_TELLER   
  6. scott=wombat,ROLE_TELLER   
  7. peter=opal,disabled,ROLE_TELLER   
  8. </value>  
  9. </property>  
  10. </bean>  
 
ÔÚÉÏÃæµÄÀý×ÓÖУ¬userMapÊôÐÔ°üº¬ÁËÿ¸öÓû§µÄÓû§Ãû£¬ÃÜÂ룬һ¸öÊÚȨÁбíÒÔ¼°Ò»¸ö¿ÉÑ¡µÄÆôÓÃ/½ûÓùؼü´Ê¡£Ê¹ÓöººÅ·Ö¸ô¡£Óû§Ãû±ØÐëÔڵȺŵÄ×ó²à£¬ÃÜÂë±ØÐëÔڵȺÅÓÒ²àµÚÒ»¸ö³öÏÖ¡£ÆôÓúͽûÓùؼü´Ê£¨´óСдÃô¸Ð£©¿ÉÒÔ³öÏÖÔÚµÚ¶þ¸ö»òÕßÖ®ºóÈÎÒâλÖá£Ê£ÓàµÄ×Ö·û´®±»¿´×÷ÊÇÊÚÓèµÄȨÏÞ£¬ÕâЩȨǮ±»´´½¨ÎªGrantedAuthorityImpl¶ÔÏ󣨽ö¹©²Î¿¼£­´ó¶àÊýµÄÓ¦Óò»ÐèÒª×Ô¶¨ÒåµÄGrantedAuthorityʵÏÖ£¬ËùÒÔʹÓÃĬÈϵÄʵÏ־ͿÉÒÔÁË£©¡£×¢ÒâÈç¹ûÒ»¸öÓû§Ã»ÓÐÃÜÂë¼°»òûÓб»ÊÚÓèȨÏÞ£¬¸ÃÓû§²»»áÔÚin-memory ÈÏÖ¤¿âÖд´½¨¡£
 
InMemoryDaoImplÒ²ÌṩÁËÒ»¸ösetUserProperties(Properties)·½·¨£¬¿ÉÒÔÔÊÐíÄãÓÃÁíÒ»¸öSpringµÄÅäÖúõÄbean»òÕßÒ»¸öÍⲿµÄpropertiesÎļþÀ´ÊµÀý»¯ÊôÐÔ¡£Äã¿ÉÄÜҪʹÓÃSpringµÄPropertiesFactoryBean£¬ËüÔÚ¼ÓÔØÍⲿÊôÐÔÎļþµÄʱºò·Ç³£ÓÐÓá£Õâ¸ösetter¿ÉÄܶÔÓÚÓдóÁ¿Óû§µÄÓ¦Ó㬻òÕß¿ª·¢ÆÚÅäÖñä¸üÓÐËùÖúÒæ£¬µ«ÊDz»ÒªÖ¸ÍûʹÓÃÕû¸öÊý¾Ý¿âÀ´´¦ÀíÈÏ֤ϸ½Ú¡£
 
6.2.2. JDBC ÈÏÖ¤
Ò²°üÀ¨ÁËÒ»¸ö´ÓJDBCÊý¾ÝÔ´»ñÈ¡ÈÏÖ¤ÐÅÏ¢µÄUserDetailsService¡£Ê¹ÓÃSpringÄÚ²¿µÄJDBC£¬±ÜÃâÁ˽ö½öΪÁË´æ´¢Óû§ÐÅÏ¢¶øÊ¹Óø´ÔӵĶÔÏó¹ØÏµCommon Authentication Services Ó³É䣨ORM£©¡£Èç¹ûÄãȷʵʹÓÃORM¹¤¾ß£¬Äã¿ÉÄÜҪдһ¸ö¶¨ÖƵÄUserDetailsServiceÀ´ÖØÓÃÄãÒѾ­´´½¨µÄÓ³ÉäÎļþ¡£»Øµ½JdbcDaoImpl£¬ÏÂÃæÊÇÒ»¸öÅäÖõÄÀý×Ó£º
 
xml ´úÂë
 
  1. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  2. <property name="driverClassName"><value>org.hsqldb.jdbcDriver</value></property>  
  3. <property name="url"><value>jdbc:hsqldb:hsql://localhost:9001</value></property>  
  4. <property name="username"><value>sa</value></property>  
  5. <property name="password"><value></value></property>  
  6. </bean>  
  7. <bean id="jdbcDaoImpl" class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl">  
  8. <property name="dataSource"><ref bean="dataSource"/></property>  
  9. </bean>  
  10.    
Äã¿ÉÄÜÒªÐÞ¸ÄÉÏÊöµÄDriverManagerDataSourceÀ´Ê¹Óò»Í¬µÄ¹ØÏµÊý¾Ý¿â¹ÜÀíϵͳ¡£Ä㻹¿ÉÒÔʹÓôÓJNDI»ñÈ¡µÄÈ«¾ÖÊý¾ÝÔ´£¬ÈçÉϵij£¹æSpringÑ¡Ïî¡£²»ÂÛÊÇʹÓÃʲôÊý¾Ý¿âÒÔ¼°ÈçºÎ»ñÈ¡Êý¾ÝÔ´£¬±ØÐëʹÓÃÒ»¸ö°´ÕÕdbinit.txtÖÐдÃ÷µÄÊý¾Ý¿âģʽ¡£Äã¿ÉÒÔ´ÓAcegi SecurityÍøÕ¾ÏÂÔØÕâ¸öÎļþ¡£
 
Èç¹ûÄãµÄĬÈÏÊý¾Ý¿âģʽ²»ÄÜÂú×ãÐèÒª£¬JdbcDaoImplÌṩÁËÁ½¸öÊôÐÔÔÊÐí¶¨ÖÆSQLÓï¾ä¡£Èç¹ûÐèÒª½øÒ»²½¶¨ÖÆ£¬Äã¿ÉÒԼ̳ÐJdbcDaoImpl¡£Çë²Î¿¼JavaDocs»ñÈ¡ÏêÇ飬²»¹ýÇë×¢ÒâÕâ¸öÀಢ²»ÊÇΪÁ˸´ÔÓµÄ×Ô¶¨Òå¼Ì³Ð¶øÐ´µÄ¡£Èç¹ûÄãµÄÐèÇó±È½Ï¸´ÔÓ(ÀýÈçÊý¾Ý¿â½á¹¹±È½ÏÌØÊâ»òÕßÐèÒª·µ»ØÒ»¸öÌØ¶¨µÄUserDetailsʵÏÖ)£¬ÄÇôÄã×îºÃд×Ô¼ºµÄUserDetailsServiceʵÏÖ¡£Acegi SecurityÌṩµÄ»ù´¡ÊµÏÖÖ»ÊÇΪÁ˵äÐͳ¡¾°£¬²¢Ã»ÓÐÌṩÎÞÏÞµÄÅäÖÃÁé»îÐÔ¡£
 
6.3. ²¢ÐÐConcurrent Session ´¦Àí
Acegi SecurityÄܹ»ÏÞ¶¨´ÎÊý·ÀÖ¹Ò»¸öprincipal¶à´Î²¢ÐÐÈÏÖ¤µ½Í¬Ò»¸öÓ¦Óá£Ðí¶àISVÀûÓÃÕâÒ»µãÀ´¼ÓÇ¿ÊÚȨ¹ÜÀí£¬Íø¹ÜҲϲ»¶Õâ¸öÌØÐÔÒòΪ¿ÉÒÔ·ÀÖ¹Ò»¸öÓû§Ãû±»Öظ´Ê¹Óá£ÀýÈ磬Äã¿ÉÒÔÏÞÖÆ“Batman”Óû§´ÓÁ½¸ö²»Í¬µÄsessionµÇ¼ϵͳ¡£
 
ʹÓò¢ÐÐsessionÖ§³Ö£¬ÄãÐèÒªÔÚweb.xmlÖÐÔö¼ÓÈçÏÂÄÚÈÝ£º
 
xml ´úÂë
 
  1. <listener>  
  2. <listener-class>org.acegisecurity.ui.session.HttpSessionEventPublisher</listener-class>  
  3. </listener>  
 
¶øÇÒ£¬ÄãÐèÒªÔÚÖÐFilterChainProxyÔö¼Óorg.acegisecurity.concurrent.ConcurrentSessionFilter to your FilterChainProxy¡£ConcurrentSessionFilterÐèÒªÁ½¸öÊôÐÔ£¬sessionRegistryÓÃÀ´Ö¸ÏòÒ»¸öSessionRegistryImplʵÀý£¬expiredUrlÖ¸ÏòÒ»¸ösessionʵЧʱÏÔʾµÄÒ³Ãæ¡£
 
µ±Ò»¸öHttpSession¿ªÊ¼»òÕß½áÊøµÄʱºòweb.xml HttpSessionEventPublisher·¢ËÍÒ»¸öApplicationEventµ½Spring ApplicationContext¡£ÕâºÜ¹Ø¼ü£¬ÒòΪËüÈ·±£sessionÖÕÖ¹µÄʱºòSessionRegistryImpl»áÊÕµ½Í¨Öª¡£
 
Ä㻹ҪװÅäConcurrentSessionControllerImpl²¢ÔÚProviderManagerÖÐÒýÓãº
 
 
xml ´úÂë
 
  1. <bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">  
  2. <property name="providers">  
  3. <!-- your providers go here -->  
  4. </property>  
  5. <property name="sessionController"><ref bean="concurrentSessionController"/></property>  
  6. </bean>  
  7. <bean id="concurrentSessionController"  
  8. class="org.acegisecurity.concurrent.ConcurrentSessionControllerImpl">  
  9. <property name="maximumSessions"><value>1</value></property>  
  10. <property name="sessionRegistry"><ref local="sessionRegistry"/></property>  
  11. </bean>  
  12. <bean id="sessionRegistry" class="org.acegisecurity.concurrent.SessionRegistryImpl"/>  
6.4. ÈÏÖ¤±êÇ©¿â
AuthenticationTagÖ»ÊÇÓÃÀ´°ÑprincipalµÄAuthentication.getPrincipal()¶ÔÏóµÄÊôÐÔÏÔʾµ½webÒ³Ãæ¡£
 
ÏÂÃæµÄJSPƬ¶ÎչʾÁËÈçºÎʹÓÃAuthenticationTag£º
 
java ´úÂë
 
  1. <authz:authentication operation="username"/>  
 
Õâ¸ö±êÇ©½«»áÏÔʾpricipalµÄÃû×Ö¡£ÕâÀïÎÒÃǼÙÉèAuthentication.getPrincipal()ÊÇÒ»¸öUserDetails¶ÔÏó£¬ÕâÔÚʹÓõäÐ͵ÄDaoAuthenticationProviderʱºòµÄÒ»°ã×´¿ö¡£

°²»ÕлªµçÄÔѧУרҵְҵ¹æ»®Ê¦ÎªÄãÌṩ¸ü¶à°ïÖú¡¾ÔÚÏß×Éѯ¡¿
Ö÷Õ¾Ö©Öë³ØÄ£°å£º 91av电影在线观看 | 中文字幕一区二区三天 | 国产精品一区不卡 | 91观看在线视频 | 国产成人一区二区三区精 | 久久精品国产午夜做受体验区 | 久久 国产 人妖 系列 | 偷拍激情视频一区二区三区 | 91亚洲综合 | 91视频免费看. | 国产成人精品日本亚洲999 | 久久久久久久久久久久久久久国产 | 国产成人精品a视频一区www | 久久九九99| 天天综合7799精品影视 | 亚洲精品视频在线观看视频 | 中文精品一区 | 91久久精品国产91久久性色tv | 亚洲天堂成人在线视频 | 男人精品天堂 | 久久久久国产成人免费精品免费 | 国产aa| 久久精品国产一区二区三区不卡 | 国产 欧美 精品 | 成人免费超碰 | 国产亚洲一二区 | 91视频免费网站 | 91视频免费入口 | 99精品久久久久久久婷婷 | 国产免费一区二区三区在线网站 | 91官网视频 | 91亚洲国产成人久久精品网站 | 在线观看欧美一区二区三区 | 国产福利在线视频 | 91精品在线观看入口 | 91免费看电影 | 91视频在线看| 91国在线高清视频 | 99热国| 91高清视频在线 | 国产中的精品av涩差av |