<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)站導航:
     
    主站蜘蛛池模板: 免费的黄色网页在线免费观看| 亚洲伦另类中文字幕| 亚洲va久久久久| 免费阿v网站在线观看g| 亚洲美女视频一区| 很黄很黄的网站免费的| 亚洲视频在线观看视频| 99ee6热久久免费精品6| 亚洲理论片中文字幕电影| 精品一区二区三区无码免费视频| 夜夜亚洲天天久久| 精品国产无限资源免费观看| 亚洲二区在线视频| 四虎影视免费在线| 国产亚洲精品免费| 亚洲日韩欧洲无码av夜夜摸| a视频在线观看免费| 精品日韩亚洲AV无码 | 久久久久久久国产免费看| 亚洲日韩aⅴ在线视频| 99久久免费中文字幕精品| 亚洲性色高清完整版在线观看| 台湾一级毛片永久免费 | 免费在线视频一区| 一区二区免费电影| 亚洲天堂男人天堂| 国产精品久久久久久久久久免费| 亚洲高清乱码午夜电影网| 免费va人成视频网站全| 成人性生交大片免费看好| 亚洲日产2021三区在线| 国产一区二区三区在线免费观看 | 全亚洲最新黄色特级网站 | 在线A亚洲老鸭窝天堂| 久久久精品2019免费观看| 亚洲中文字幕无码mv| 亚洲午夜精品一级在线播放放 | 全免费a级毛片免费看无码| 一个人看的www免费高清| 亚洲熟妇av一区二区三区下载| 日本人的色道www免费一区|