Spirng Acegi 身份认证连载

本文介绍了一种基于内存的身份认证方式,通过具体步骤演示了如何在Web应用中实现统一身份认证,包括配置文件、依赖包引入及JSP页面设计。

      随着企业不同的应用的数量的增多,但是在企业内部不同的用户都要去登录不同的系统;是想一下,如果每个系统都有自己的一套权限,那么系统的用户都要有自己的用户名和密码,那么一个高层领导要查看公司的系统,是否一定知道所有系统的自己的帐号和密码,这是一件相当繁琐的事情。统一身份认证就是问解决此类问题的一个框架。好了,废话不说了,现在开始共享一下我学习身份认证框架的过程。

 

     简单的认证方式--基于内存的认证

     步骤如下:

     第一步:在Ecplise下创建一个动态的web工程(这步不做详细解释,凡是使用Eclipse开发web的都应该会)。

     第二步:添加项目jar包:

      standard.jar

      spring.jar

      jstl.jar

      commons-logging.jar

     acegi-security-tiger-1.0.3.jar

     acegi-security-1.0.3.jar

    说明:本人学习时使用是Spring2.5.6和acegi-security-1.03版本

   第三步:配置web.xml文件

   <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 id="WebApp_ID" version="2.5">
 <display-name>Security</display-name>
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
          classpath:applicationContext-acegi-plugin.xml
     </param-value>
 </context-param>
 
 <filter>
    <filter-name>AcegiFilterChainProxy</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>AcegiFilterChainProxy</filter-name>
    <url-pattern>/*</url-pattern>
 </filter-mapping>
 
 <listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 
 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
</web-app>

 

第四步: 根据web.xml文件的context-param在相应的路径下创建Spring的xml文件

      在src目录下创建applicationContext-acegi-plugin.xml文件,内容如下:

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

 <bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">
  <property name="filterInvocationDefinitionSource">
   <value>
    CONVERT_URL_TO_UPPERCASE_BEFORE_COMPARISON
    PATTERN_TYPE_APACHE_ANT
    /**=authenticationProcessingFilter
   </value>
  </property>
 </bean>
 
 <bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">
  <property name="providers">
    <list>
      <ref local="daoAuthenticationProvider"/>
    </list>
  </property>
 </bean>
 
 <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
   <property name="userDetailsService" ref="userDetailsService"/>
 </bean>
 
 <bean id="userDetailsService" class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">
  <property name="userMap">
      <value>
         john=john,PRIV_COMMON,PRIV_1
         tom=tom,PRIV_COMMON,PRIV_1,PRIV_2
         peter=peter,disabled,PRIV_COMMON,PRIV_1
      </value>
  </property>
 </bean>
 
 <bean id="authenticationProcessingFilter" class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter">
     <property name="authenticationManager" ref="authenticationManager"/>
  <property name="filterProcessesUrl" value="/j_acegi_security_check"/>
  <property name="defaultTargetUrl" value="/main.jsp"/>
  <property name="authenticationFailureUrl" value="index.jsp?login_error=1"/>
 </bean>
 
</beans>

 

第五步:添加log4j.properties文件

     在src目录下添加log4j.properties文件,内容如下:

     log4j.rootLogger=DEBUG,A1
     log4j.appender.A1=org.apache.log4j.ConsoleAppender
     log4j.appender.A1.layout=org.apache.log4j.PatternLayout
     log4j.appender.A1.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n

 

第六步:添加Jsp页面

     在web的根目录下创建index.jsp和main.jsp文件(为什么在web的根目录下创建原因见applicationContext-acegi-plugin.xml的id为authenticationProcessingFilter的bean)

   index.jsp内容如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录页面</title>
</head>
<body>
<c:if test="${not empty param.login_error}">
  <font color="red">用户名和密码错误</font>
</c:if>
<form name="form1" method="post" action="<c:url value="/j_acegi_security_check"/>">
  用户名:<input type="text" name="j_username"><br>
  密码:<input type="text" name="j_password"/><br>
  <input type="submit" value="登录">
</form>
</body>
</html>

 

main.jsp内容日下

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="authz" uri="http://acegisecurity.org/authz" %>
<html>
  <head>
    <title>main</title>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
  </head>
  <body>
    当前用户:<authz:authentication operation="username"/><br/>

  </body>
</html>
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值