<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    athrunwang

    紀元
    數(shù)據(jù)加載中……
    apache shiro與spring的環(huán)境搭建
    [代碼] web.xml
    <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                 <!--spring 的配置文件-->
                 classpath:/applicationContext-hibernate.xml
            </param-value>
       </context-param>
     
       <!-- shiro -->
       <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>
     
       <filter-mapping>
            <filter-name>shiroFilter</filter-name>
            <url-pattern>/*</url-pattern>
       </filter-mapping>
     
       <!-- Listeners -->
       <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
       </listener>
    [代碼] applicationContext-hibernate.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="     xmlns:xsi="     xsi:schemaLocation="
          
    http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
           http://www.springframework.org/schema/aop
          

         <!-- SessionFactory, DataSource, etc. omitted -->

         <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
              destroy-method="close">
              <property name="driverClassName" value="${jdbc.driverClassName}" />
              <property name="url" value="${jdbc.url}" />
              <property name="username" value="${jdbc.username}" />
              <property name="password" value="${jdbc.password}" />
         </bean>

         <bean id="sessionFactory"
              class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
              <property name="dataSource" ref="dataSource" />
              <property name="packagesToScan">
                   <list>
                        <value>org.projects.graduates.domain</value>
                   </list>
              </property>
              <property name="hibernateProperties">
                   <value>hibernate.dialect=${hibernate.dialect}</value>
              </property>
         </bean>

         <bean id="txManager"
              class="org.springframework.orm.hibernate3.HibernateTransactionManager">
              <property name="sessionFactory" ref="sessionFactory" />
         </bean>

         <tx:advice id="txAdvice" transaction-manager="txManager">
              <tx:attributes>
                   <tx:method name="get*" read-only="true" />
                   <tx:method name="find*" read-only="true" />
                   <tx:method name="*" propagation="REQUIRED" />
              </tx:attributes>
         </tx:advice>

         <aop:config>
              <aop:pointcut id="appOperation"
                   expression="execution(* org.projects.graduates.app.GradApplication.*(..))" />
              <aop:advisor advice-ref="txAdvice" pointcut-ref="appOperation" />
         </aop:config>

         <!-- shiro -->
         <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
              <property name="securityManager" ref="securityManager" />
              <property name="loginUrl" value="/login.action" />
              <property name="successUrl" value="/main.action" />
              <property name="unauthorizedUrl" value="/login.action" />
              <property name="filterChainDefinitions">
                   <value>
                        /index.action = anon
                        /login.action = anon
                        /main.action = authc, roles[admin]
                        /course/** = authc, roles[admin]
                   </value>
              </property>
         </bean>

       
         <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
         <!--設置自定義realm-->
              <property name="realm" ref="myRealm" />
         </bean>
       
         <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />
       
         <!--myRealm 繼承自AuthorizingRealm-->
         <bean id="myRealm" class="org.projects.graduates.shiro.GradRealm" ></bean>

         <bean
              class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
              <property name="staticMethod"
                   value="org.apache.shiro.SecurityUtils.setSecurityManager" />
              <property name="arguments" ref="securityManager" />
         </bean>

    </beans>

    [代碼] org.projects.graduates.shiro.GradRealm

    public class GradRealm extends AuthorizingRealm {

         private SecurityApplication securityApplication = new SecurityApplicationImpl();

         public GradRealm() {
              super();
              //設置認證token的實現(xiàn)類
              setAuthenticationTokenClass(UsernamePasswordToken.class);
              //設置加密算法
              setCredentialsMatcher(new HashedCredentialsMatcher(Sha1Hash.ALGORITHM_NAME));
            
         }
         //授權
         protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
              String loginName = (String) principalCollection.fromRealm(getName()).iterator().next();
              User user = securityApplication.findby(loginName);
              if (null == user) {
                   return null;
              } else {
                   SimpleAuthorizationInfo result = new SimpleAuthorizationInfo();
                 
                   result.addRoles(UserRoles.findRoleNamesOf(user));
                   for (Role role : UserRoles.findRolesOf(user)) {
                        result.addStringPermissions(role.getPermissions());
                   }
                 
                   return result;

              }
         }

         //認證
         protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
              UsernamePasswordToken upToken = (UsernamePasswordToken) token;
              User user = securityApplication.findby(upToken.getUsername());
              if (user != null) {
                   return new SimpleAuthenticationInfo(user.getUsername(), user.getPassword(), getName());
              }
              return null;
         }
    }


    posted on 2012-03-06 10:07 AthrunWang 閱讀(4982) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 卡一卡二卡三在线入口免费| 最近中文字幕高清免费中文字幕mv | 亚洲国产一成人久久精品| 精品亚洲国产成人av| 噜噜嘿在线视频免费观看| 亚洲乱理伦片在线观看中字| 成人在线视频免费| 亚洲AV无码专区亚洲AV桃| 午夜亚洲av永久无码精品| 午夜不卡AV免费| 国产亚洲精品资在线| 男女作爱在线播放免费网站| 7777久久亚洲中文字幕蜜桃| 免费下载成人电影| 亚洲乱亚洲乱妇无码| 四虎亚洲国产成人久久精品| 中文字幕av无码不卡免费| 亚洲AV人无码综合在线观看| 6080午夜一级毛片免费看| 麻豆狠色伊人亚洲综合网站 | 在线视频网址免费播放| 亚洲精品国产美女久久久| 特级精品毛片免费观看| 亚洲最大黄色网址| 免费视频中文字幕| 美女露100%胸无遮挡免费观看| 亚洲区小说区图片区| 99久在线国内在线播放免费观看 | 亚洲精品又粗又大又爽A片| 亚洲精品无码久久久| 久久久久免费精品国产小说| 亚洲黄色免费在线观看| 免费国产小视频在线观看| a色毛片免费视频| 亚洲欧洲另类春色校园网站| 免费jlzzjlzz在线播放视频| 久久免费线看线看| 亚洲一卡2卡3卡4卡5卡6卡| 国产亚洲精品福利在线无卡一| 1000部免费啪啪十八未年禁止观看| 亚洲精品久久无码|