acegi step by step 1

本文介绍 Acegi 安全框架的配置方法,包括环境搭建所需的 JAR 包、Web 应用配置文件 web.xml 的修改、身份验证流程及权限验证设置等核心内容。

一、环境设定:

相关jar:

acegi-security-1.0.5.jar - Main classes of the Acegi Security system
cglib-2.1.3.jar - Code-generation library used by Spring
commons-codec-1.3.jar - Encoders and decoders such as Base64, Hex, Phonetic, and URLs
commons-lang-2.1.jar - Helper utilities for java.lang APIs
ehcache-1.2.3.jar - Used for basic caching purposes
freemarker-2.3.8.jar - Used by the Struts implementation
jstl.jar, standard.jar - JavaServer Pages Standard Tag Library (JSTL) tag library
log4j-1.2.13.jar - For logging
ognl-2.6.11.jar - OGNL library used by the Struts implementation
sitemesh-2.3.jar - SiteMesh JAR
spring.jar - Spring Framework JAR
struts2-core-2.0.8.jar - Struts 2 core JAR
xwork-2.0.3.jar - Used by Struts

修改web.xml:

作用是利用spring AOP将filter Proxy到web.xml里去,并拦截相关的request

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  version="2.4">
  <display-name>AcegiTraining</display-name>
  <context-param>

    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext*.xml</param-value>
  </context-param>
  <filter>
    <filter-name>Acegi Filter Chain Proxy</filter-name>

    <filter-class>
      org.acegisecurity.util.FilterToBeanProxy
    </filter-class>
    <init-param>
      <param-name>targetClass</param-name>
      <param-value>

        org.acegisecurity.util.FilterChainProxy
      </param-value>
    </init-param>
  </filter>
  ...
  ...
  <filter-mapping>
    <filter-name>Acegi Filter Chain Proxy</filter-name>

    <url-pattern>/j_acegi_security_check</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>Acegi Filter Chain Proxy</filter-name>
    <url-pattern>/j_acegi_logout</url-pattern>

  </filter-mapping>
  <filter-mapping>
    <filter-name>Acegi Filter Chain Proxy</filter-name>
    <url-pattern>*.action</url-pattern>
  </filter-mapping>

  <filter-mapping>
    <filter-name>Acegi Filter Chain Proxy</filter-name>
    <url-pattern>*.jsp</url-pattern>
  </filter-mapping>
  ...

</web-app>


二、身份验证

WEB-INF下增加applicationContext-acegi-security.xml文件,并增加验证服务所需要的filter:

web.xml中的FilterToBeanProxy将拦截的内容:

<bean id="filterChainProxy"
    class="org.acegisecurity.util.FilterChainProxy">

    <property name="filterInvocationDefinitionSource">
      <value>
        CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
        PATTERN_TYPE_APACHE_ANT
        /j_acegi_security_check*=httpSessionContextIntegrationFilter,authenticationProcessingFilter
        /**/*=httpSessionContextIntegrationFilter,logoutFilter,
authenticationProcessingFilter,securityContextHolderAwareRequestFilter,
anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
      </value>
    </property>

  </bean>

如果未经过允许的请求,将会由exceptionTranslationFilter处理,将页面转到注册页面处去处理,authenticationProcessingFilterEntryPoint,是身份验证的入口:

                       
<bean id="exceptionTranslationFilter"
  class="org.acegisecurity.ui.ExceptionTranslationFilter">
  <property name="authenticationEntryPoint">
    <ref local="authenticationProcessingFilterEntryPoint" />
  </property>

  ...
</bean>

<bean id="authenticationProcessingFilterEntryPoint"
  class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint">
  <property name="loginFormUrl">
    <value>/login.jsp</value>
  </property>

  <property name="forceHttps">
    <value>false</value>
</bean>


authenticationProcessingFilter就是进行身份验证所用到的的filter,其主要是依靠authenticationManager来进行数据库或文本文件上存放的注册信息来进行核对:

<bean id="authenticationProcessingFilter"
  class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter">
  <property name="authenticationManager">
    <ref bean="authenticationManager" />
  </property>

  <property name="authenticationFailureUrl">
    <value>/login.jsp?login_error=1</value>
  </property>
  <property name="defaultTargetUrl">
    <value>/</value>

  </property>
  <property name="filterProcessesUrl">
     <value>/j_acegi_security_check</value>
  </property>
</bean>


<bean id="authenticationManager"
  class="org.acegisecurity.providers.ProviderManager">
  <property name="providers">

    <list>
      <ref local="daoAuthenticationProvider" />
      <ref local="anonymousAuthenticationProvider" />
    </list>
  </property>
</bean>


<bean id="daoAuthenticationProvider"
    class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
    <property name="userDetailsService"/><ref local="userDetailsService"/></property>
    <property name="userCache">

    ...
    </property>
  </bean>
 
  <bean id="userDetailsService"
    class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">
    <property name="userProperties">
      <bean
        class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="location"
          value="/WEB-INF/users.properties" />

      </bean>
    </property>
  </bean>


users.properties:
james=tom@1231,ROLE_TECHNICIAN
krishna=krish2341,ROLE_TECHNICIAN
smith=pravah@001,ROLE_ADMIN

三、权限验证

在身份验证后,通过权限验证来决定哪些资源由拥有哪些权限的用户使用,httpRequestAccessDecisionManager控制投票方式,exceptionTranslationFilter增加了如果权限验证失败后所转到的处理页面,logoutFilter定义登出后转到首页:

<bean id="filterInvocationInterceptor"
  class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">
  <property name="authenticationManager">
    <ref bean="authenticationManager" />
  </property>
  <property name="accessDecisionManager">

    <ref local="httpRequestAccessDecisionManager" />
  </property>
  <property name="objectDefinitionSource">
    <value>
      PATTERN_TYPE_APACHE_ANT
    /index.jsp=ROLE_ADMIN,ROLE_TECHNICIAN
    /order/createOrder.jsp=ROLE_TECHNICIAN
    /order/authorizeOrder.jsp=ROLE_ADMIN
    /login.jsp=ROLE_ANONYMOUS,ROLE_TECHNICIAN,ROLE_ADMIN
    </value>
  </property>

</bean>

<bean id="exceptionTranslationFilter"
    class="org.acegisecurity.ui.ExceptionTranslationFilter">
    <property name="authenticationEntryPoint">
      <ref local="authenticationProcessingFilterEntryPoint" />
    </property>

    <property name="accessDeniedHandler">
      <bean
        class="org.acegisecurity.ui.AccessDeniedHandlerImpl">
        <property name="errorPage" value="/accessDenied.jsp" />
      </bean>
    </property>
  </bean>


<bean id="httpRequestAccessDecisionManager"
    class="org.acegisecurity.vote.AffirmativeBased">
    <property name="allowIfAllAbstainDecisions">
      <value>false</value>

    </property>
    <property name="decisionVoters">
      <list>
        <ref bean="roleVoter" />
      </list>
    </property>

  </bean>
  <bean id="roleVoter" class="org.acegisecurity.vote.RoleVoter" />

<bean id="logoutFilter"
  class="org.acegisecurity.ui.logout.LogoutFilter">
  <constructor-arg value="/index.jsp" />
  <!-- URL redirected to after logout -->
  <constructor-arg>

    <list>
      <bean
        class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler" />
    </list>
  </constructor-arg>
</bean>


至此,acegi配置部分完成,剩下相关页面设计部分。
内容概要:本文为《科技类企业品牌传播白皮书》,系统阐述了新闻媒体发稿、自媒体博主种草与短视频矩阵覆盖三大核心传播策略,并结合“传声港”平台的AI工具与资源整合能力,提出适配科技企业的品牌传播解决方案。文章深入分析科技企业传播的特殊性,包括受众圈层化、技术复杂性与传播通俗性的矛盾、产品生命周期影响及2024-2025年传播新趋势,强调从“技术输出”向“价值引领”的战略升级。针对三种传播方式,分别从适用场景、操作流程、效果评估、成本效益、风险防控等方面提供详尽指南,并通过平台AI能力实现资源智能匹配、内容精准投放与全链路效果追踪,最终构建“信任—种草—曝光”三位一体的传播闭环。; 适合人群:科技类企业品牌与市场负责人、公关传播从业者、数字营销管理者及初创科技公司创始人;具备一定品牌传播基础,关注效果可量化与AI工具赋能的专业人士。; 使用场景及目标:①制定科技产品全生命周期的品牌传播策略;②优化媒体发稿、KOL合作与短视频运营的资源配置与ROI;③借助AI平台实现传播内容的精准触达、效果监测与风险控制;④提升品牌在技术可信度、用户信任与市场影响力方面的综合竞争力。; 阅读建议:建议结合传声港平台的实际工具模块(如AI选媒、达人匹配、数据驾驶舱)进行对照阅读,重点关注各阶段的标准化流程与数据指标基准,将理论策略与平台实操深度融合,推动品牌传播从经验驱动转向数据与工具双驱动。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值