Work hard

[原创]Acegi

上一篇 / 下一篇  2007-05-24 14:11:49 / 个人分类:Acegi

海岸线网络聚合+T D};zH@XQ Jq

1.1  Acegi安全框架简介
Ap9b&dj)BpM0Acegi安全框架是一个开放源码的项目,为企业应用提供全面的认证和授权服务,而且它是基于 Spring框架.。Acegi安全框架是一个强大的,灵活的安全解决方案的企业软件,其中特别着重于应用程序使用Spring框架。用acegi可以为应用提供全面的认证,授权,如存取控制、通道安全等等。
I r~9TF1L8}5s7?0Acegi安全框架的主要功能是:
-Q3cz3W nS*[01)稳定和成熟
TLO)h\)`:bd1g02)丰富的文档支持 海岸线网络聚合'Sp*DO2{4}
3)快速构建安全的系统 海岸线网络聚合FAP;N"j,?MP OX
4)支持单点登陆(SSO) 海岸线网络聚合ihdKuX
5)使用Acegi时可以充分使用Spring的经验
leOn~dlf06)领域对象实体安全
#yNz0Q#c3R/G07)非侵入式安装 海岸线网络聚合uO0a)Q5]2pA8jC}ZU
8)完全(但是可以选择)的Web容器的整合 海岸线网络聚合$V&W w8UC_l"ua
9)通道安全
8g"rE;q7WySp010)保护你的HTTP请求
2c,a,k`8k8iX)Y[011)支持基于表单认证
8YQ a(|m(B$xr012)支持HTTP BASIC认证
{d9g)n5O7hx013)支持HTTP Digest认证
NNi-X?.X(Yu$G XU014)支持X509认证 海岸线网络聚合B4T.mw{\(wu1jm
15)支持LDAP 海岸线网络聚合yM.e8Q0u
16)支持标签库 海岸线网络聚合7t[ m7~ `q'RSM
通过Ioc的XML 共享属性 或者JDK5的Annotation来配置Acegi 海岸线网络聚合QR2s6tA.L y'~` ~
事件支持当然这些只是其中的一部份功能,Acegi安全框架比较庞大,它支持Java EE 5的安全性编程模型,并且Acegi更易用、功能更强大。人们使用Acegi Security有很多种原因,不过通常吸引他们到这个项目的原因是他们在J2EE的 Servlet Specification 或者 EJB Specification中找不到迫切需要的典型企业应用场景。提到这些规范,特别要提出的是他们不是在WAR或者EAR级别可移植的。这样,如果你切换服务器环境,一般来说你要在目标环境中花费很多工夫来重新配置你的应用安全。使用Acegi Security解决了这些问题,并且为你提供了很多其他有用的,完全可定制的安全特性。正如读者你刚看到的罗列了一部分Acegi的功能,Acegi支持了各种各样的认证,认证是安全的主要操作之一,为用户建立一个它所声明的principal。Principal通常代表用户,设备,或者其他能在你的应用中执行操作的其他系统。“授权”指判定一个principal能否在你的系统中执行某个操作。在到达授权判断之前,principal的的身份认证已经由认证过程执行过了。在Acegi中,除了支持各种认证模块外,还支持自己订制的认证模块。Acegi认证授权主要基于两大技术,一是Filter机制,二是AOP的拦截机制。通过FilterSecurityInterceptor很好地实现了对URI的保护,通过MethodSecurityInterceptor实现了对Service的方法的拦截保护,通过ACL 实现了对prototype类型的Object进行过滤和保护。 海岸线网络聚合+[ ~Z@t x2`0s)~;z{

3W7R&Qb7|d8Z%n,Z01.2  安装Acegi框架
` d^ v h01.2.1  建立Acegi-Demo目录结构 海岸线网络聚合%u]sM0^-_A
在Eclipse下创建一个Web工程,命名为Acegi-Demo,其目录结构如下图所示。

|*[xrZMBDp`;Tj0 海岸线网络聚合$H+OWS7{^dH

1.2.2  下载Acegi以及必要的JAR包Acegi主页的地址是:http://acegisecurity.org/笔者使用的Acegi版本是1.0.3,下载地址是:http://sourceforge.net/project/showfiles.php?group_id=104215 读者可以选择最近的镜像服务器来下载,速度会快一些。需要下载的是acegi-security-1.0.3.zip ,当然最好把acegi-security-1.0.3-src.zip也下下来,它包含了Acegi的源代码,阅读源代码可以更加深刻地理解该框架。除了acegi-security-1.0.3.jar外,还需要spring的jar包和日志的jar包等等。我将所有的Jar包罗列出来,读者可以很清晰的看到,当然也可以看项目中的.classpath文件,用记事本打开就可以看到该项目所需要的Jar包。

1cS7E%t d&D!{Ov0

&?3\4Y2E+X/L4S Hp01.3  配置Acegi框架海岸线网络聚合 u1o0t;[ M`3r

oc F*Cc6v r01.3.1  配置web.xml文件
X$QR5hW/o0要将Acegi配置到web程序中,首先需要将Spring的DI容器装载到ServletContext中,即配置web.xml文件。然后配置在web.xml中配置Acegi的过滤器,因为Acegi是由过滤器驱动的。但是Acegi有许多的过滤器,我们不用全部写在web.xml的配置文件中,因为它提供了一个特殊的过滤器FilterToBeanProxy。下面给出了web.xml的完整代码:海岸线网络聚合8j B3Tm3MJm'b1[R

HMk Yg8?0<?xml version="1.0" encoding="UTF-8"?>海岸线网络聚合*Mm]Z5~c

f.DVtx p0z)B"?0<web-app version="2.4"

jG/O;?#W.Oi0 海岸线网络聚合9l+U$p _;T9v*sy ?

        xmlns="http://java.sun.com/xml/ns/j2ee"

(|5}ut _9G3g0

a b8GC,N8C X[0        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

MY!f[.atvZ-y7y0 海岸线网络聚合wU/e#F'M

        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

7Uo1XwruR/w0

e)SJP6m1H!n6`:m0        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

)J ]bg[ c0 海岸线网络聚合o3R^B'm.? p$k

        <display-name>Acegi Demo</display-name>海岸线网络聚合#wtt d;j8f-X

海岸线网络聚合t3Q"X+} s*?J6N|,c5?'`3vZ

&?T,U`:O$P rc9b0 海岸线网络聚合7V2h7v-UV;h,D`7?'z3]3`

        <context-param>海岸线网络聚合IdM#|!vZ$d._

!z!x9I/m#i%W]w0              <param-name>contextConfigLocation</param-name>海岸线网络聚合Br$XFj$k3ZGp

海岸线网络聚合0To??3?:E&_ t:_ x

              <param-value>/WEB-INF/ applicationContext.xml</param-value>

Lk |~KT^ Z:Y h0 海岸线网络聚合x"TGE!gb.i&lQ

        </context-param>

4x#^7WwY'Uj%]0

aV:\U YK0       

A ~YMe0 海岸线网络聚合%RId#PW;Als%y

        <filter>海岸线网络聚合ok;q'K"sx/bp

海岸线网络聚合9js(YI+L+R1y

                <filter-name>Acegi Filter Chain Proxy</filter-name>

Sc#FTqb+eQ I0 海岸线网络聚合 ET | w8B

                <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>

]]O&y6]:K\0 海岸线网络聚合^9pA1Id+jn'L:B

                <init-param>海岸线网络聚合By.t@O

海岸线网络聚合`IiC"?"e

                    <param-name>targetBean</param-name>

N#F#~FCD{oc&e0 海岸线网络聚合*iUfO\o!lT

                    <param-value>filterChainProxy</param-value>海岸线网络聚合Ms3i1wuw8J&X

6ncSX&| E'R6?:?0                </init-param>

'^'_3Mn!J DM1H0

sG#h k2l2Q0        </filter>

:l QIE bA`0 海岸线网络聚合0ma } x?!sq0ZZ

       

H6BaM] Gquub0

*X!w[Y A4P\j {0        <filter-mapping>海岸线网络聚合 mI;FDb? D`

海岸线网络聚合 jv EAEr^

               <filter-name>Acegi Filter Chain Proxy</filter-name>

3`l5M+b7{'Z~S0

Z-yd)X;p0               <url-pattern>/*</url-pattern>

~uY,}d"c2_T0 海岸线网络聚合a%\Ngg/N!fZ;l/{A

        </filter-mapping>海岸线网络聚合&h }3d^$U q

海岸线网络聚合3R~$]"k#G];]

 海岸线网络聚合FBg#iy-F2e1G

(u [[o!r j0        <listener>

m's/X^#AgH/Dq6Gu0

/L)n(_.m5d?3| ` }0              <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>海岸线网络聚合s;g:aN lI,e'D

海岸线网络聚合-~Eqx-]y#L@

        </listener>

(x y\kJ8?#_Z1o0 海岸线网络聚合'J"fDO u@d}

 海岸线网络聚合 Y%H9@b cH

+y5{,UN8@HI{}F:b0        <welcome-file-list>海岸线网络聚合0] ^%j&g6M

|8a'A0H8B+qB9m0              <welcome-file>Login jsp</welcome-file>海岸线网络聚合 Uy-g)hF j~

海岸线网络聚合"i&~+X+b'q `T:o(p

        </welcome-file-list>

-C ^Mv0L0Vjfz0

Wu [F R`8W0</web-app> 
4uUHj/Nr1S0 
zZ.xH8D7n S-XV*].KJ01.3.2 配置applicationContext.xml文件
5@/[6Y\h0配置Spring的配置文件是最重要的一步,通过filterChainProxy这个bean可以减少许多过滤器在web.xml中的配置。通过httpSessionContextIntegrationFilter这个bena可以读取Session里的身份验证。通过daoAuthenticationProvider这个bean可以读取存储在数据库中的用户身份信息。通过inMemDaoImpl这个bean可以读取存储在配置文件中的用户身份信息。当然用户信息也可以自己实现(只要实现userDetailsService接口就行)。

2^!w?ys,LWt#u0

*Ek{7i.g.J*B'El_ H0<?xml version="1.0" encoding="UTF-8"?>

#bY ]}6ug0

y+^&W-e*A;IX0 

P$Itx3zI`E0

~A Bb6O0<beans xmlns="http://www.springframework.org/schema/beans"海岸线网络聚合 D d%v A_uw

R\aB,i8[5I0        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

!hB0W^:k9gh0

?@-m8p``r0        xsi:schemaLocation="http://www.springframework.org/schema/beans

~8TfZ.OD F!U&Ln2L0

5zyCs%x0              http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">海岸线网络聚合 n|N} LQ JD

海岸线网络聚合 \ NkYv[(UY

        海岸线网络聚合j4Km4D$Uf/S

海岸线网络聚合z(iK:^-PM"V$bk;p

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

{c(sg@,tJ0 海岸线网络聚合z4N-D/cmY(Y i|

              <property name="filterInvocationDefinitionSource">

cW6I A4G0

`,Q8nkb-jE!a$v0                     <value>

'Q:_g%xK0

-y7EpW.P0ZG0                            PATTERN_TYPE_APACHE_ANT

/H6t-Gb9to&h0 海岸线网络聚合K,L:Ye G5]+F|

                                    /**=httpSessionContextIntegrationFilter,basicProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor

l3@;e!e1F@ n0

Dpj t.TD#X:E0                     </value>海岸线网络聚合 J^E3y!~G uL

gX"iDch0              </property>海岸线网络聚合6siW7iI1s

海岸线网络聚合1l['t mv6w H

        </bean>

/u0eq~d:f0

] h-q#j2WX0        海岸线网络聚合^op&e JV

C,\f@6t6ie0   <bean id="httpSessionContextIntegrationFilter" 海岸线网络聚合A*g _:N(J

D WhCkx0            class="org.acegisecurity.context.HttpSessionContextIntegrationFilter">海岸线网络聚合 f4dUTi7T

海岸线网络聚合n8V0{\I-m3eD t

            <property name="allowSessionCreation" value="false" />

i!wK `5~g`W_0 海岸线网络聚合H6\*m$UiF

      </bean>海岸线网络聚合*G |Y]w

6ct%Z%I!h(]T0   海岸线网络聚合0yrJdS.E^n

iR2w |1Y9a{\0        <bean id="basicProcessingFilter"海岸线网络聚合1o)~ L"O:u}p

海岸线网络聚合&{qJS0g&Y

              class="org.acegisecurity.ui.basicauth.BasicProcessingFilter">海岸线网络聚合"RS0PS(O#po

(h(J[G&y2iw5sKk0              <property name="authenticationManager" ref="authenticationManager" />海岸线网络聚合2bMG4`D0Q.DU

海岸线网络聚合i jp"Z6tg2S

              <property name="authenticationEntryPoint" ref="basicProcessingFilterEntryPoint" />

^y$S;L[V4x3w.XA0

#U+b@&OT h(ZKb!t%|0        </bean>

DZ(p/_:};R7moJT4L0

GXG\,t!V$C$g0 海岸线网络聚合0H| E'S&P]|

海岸线网络聚合k5m^.b@s(m1|3Xr

        <bean id="basicProcessingFilterEntryPoint"

%_)XA*R)I0

E1`,E`w5s,q0              class="org.acegisecurity.ui.basicauth.BasicProcessingFilterEntryPoint">海岸线网络聚合'V] RCO CX

海岸线网络聚合8^4H2u4P5OXN n&S*sj

              <property name="realmName" value="Acegi Demo Realm" />海岸线网络聚合+^*Eb|;Yoz

GG8J;H9n1T:S'n.i0        </bean>

;vk(PM2@y Y0

2iZ};DOp0        海岸线网络聚合ho3| ]8P$Y9Z*Y c

海岸线网络聚合w6wm0T?l4iN1[

        <bean id="authenticationManager"海岸线网络聚合cHT2l!e&a2Vp;x&No

-c\6r.] v7^4V+B0              class="org.acegisecurity.providers.ProviderManager">

V ?vX$V]0

:f+m1d|r/?:x0              <property name="providers">

kIeB5e{\0 海岸线网络聚合/`$p5A/~HH r!|

                     <list>

2PS CF7u'w0 海岸线网络聚合3K'{/c!O;]*j)u{

                            <ref local="daoAuthenticationProvider" />海岸线网络聚合3V T-K$JO/c WX dH

海岸线网络聚合#[}*h Aotw

                     </list>海岸线网络聚合Fx yB H5wg#R

#y4I&D#z%x'y0              </property>

|z.EGY4NO0

p:T3m B$R%bn E0        </bean>海岸线网络聚合IE I;O.S1W

4hF ? @,~IH#C0 海岸线网络聚合j,o;q:Un;[2_i/sVa

rf(z~-Q\T0        <bean id="daoAuthenticationProvider"海岸线网络聚合.{@zC(Z)s}'b

M6zs_^ Jc!K#g0              class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">海岸线网络聚合h%qX?.?j

[_|hlS2X\0              <property name="userDetailsService" ref="inMemDaoImpl" />海岸线网络聚合.EI1[0k/FL4g }*H1f

海岸线网络聚合:kyY0S;G||

        </bean>

6x@BR0k0

LV+L4D~\-R0       

D%V'x9B Y/c#B0

8Y6p~%a7p*N2y~!p0        <bean id="inMemDaoImpl"

8a+G^/y5HS_"Any(E0 海岸线网络聚合 \EU2CD5mBV3I

              class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">

*x']%T%s3db0

Dg0G2jM0              <property name="userMap">海岸线网络聚合Cb6I#s(oD;J

海岸线网络聚合)j-v TB(X,zsOl D

                     <value>root=psw,ROLE_ADMIN</value>海岸线网络聚合}|v.k5cX,N/G

海岸线网络聚合tWTXzi c2^ L

              </property>海岸线网络聚合SM\/@ c cf1K

^H!Mvl T0        </bean>海岸线网络聚合qy;h _w|+u

海岸线网络聚合:y5OO9K;YaD o

 海岸线网络聚合] ?nH7\&~:H

c0^w!M8b0        <bean id="exceptionTranslationFilter"

EG_5UNb,z2n7j9P @ m0

P__,GnTQ-t0              class="org.acegisecurity.ui.ExceptionTranslationFilter">

OK5A:B9P0

0M8~'A2^bDxl3H6] \0hb0              <property name="authenticationEntryPoint" ref="basicProcessingFilterEntryPoint" />海岸线网络聚合&r4|1i2n1`'[d3] L1JC

Iv[I/JBtU t0              <property name="createSessionAllowed" value="false" />海岸线网络聚合 {fb9F_1^o8G

海岸线网络聚合qQ"DPB i X2XkZ(DU

        </bean> 

iNZ"v.k&y0

RI n ix_ z0        <bean id="filterInvocationInterceptor"海岸线网络聚合f%T bty,`3n@d

L#^/A5LJ;Q-r3`0              class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">

B(]R/J2l3x0

wxZhh/M.~0              <property name="authenticationManager" ref="authenticationManager" />海岸线网络聚合Zdp r7y@A$D5q ?F

海岸线网络聚合|7\?9{0Iga0ui H

              <property name="accessDecisionManager" ref="httpRequestAccessDecisionManager" />海岸线网络聚合'~k Us6Icnw

海岸线网络聚合"UYDno.k+a

              <property name="objectDefinitionSource">海岸线网络聚合6Ie O;LK1N7VH

海岸线网络聚合7w olb L

                     <value>海岸线网络聚合)a1l9kHXH e:[)K-s|

海岸线网络聚合;@T v:d0lt

                            PATTERN_TYPE_APACHE_ANT 海岸线网络聚合&f*Pn&Env,A8[ M

海岸线网络聚合KcNJ'`

                            /security.jsp=ROLE_ADMIN海岸线网络聚合e PAHn6D9E.y

海岸线网络聚合 yl#Y2I*EQLi$X\

                     </value>

T|4fe:m%O$G-E4s0 海岸线网络聚合 Wke6dQ'K%]9KZ

              </property>海岸线网络聚合[X?}+J2{)`

o7I {D.u5}sI0        </bean>

$TL w,cZ0 海岸线网络聚合,I8_i ?s5P s

 海岸线网络聚合'GB3|4b C~9M

海岸线网络聚合Bx;pn4`zZ"U mplh

        <bean id="httpRequestAccessDecisionManager"

`?bY0I"wpb\$N0

r/v`n S+P0              class="org.acegisecurity.vote.AffirmativeBased">

%d2_.Z5z5h0 海岸线网络聚合.N9F&n)Y)sy(Z

              <property name="decisionVoters">海岸线网络聚合'j+\5Xjld

Cp:M,[a1V ^\0                     <list>海岸线网络聚合.Nl/|7Ik.q,[

}!U+T7ps He/P0                            <ref bean="roleVoter" />

7cnP'?)@4V8se0

|xc*q,J0|N0                     </list>海岸线网络聚合vLkYE E1wy&@'U'{

海岸线网络聚合GX:d5aP:P1c y

              </property>

?k0j!wxK0

:M(K S$z {Z0        </bean>海岸线网络聚合'O^G&K'F DE

海岸线网络聚合*nlbKj|q$N

 

G~Lcuh/]Y0

2[+l%H%z9{0        <bean id="roleVoter" class="org.acegisecurity.vote.RoleVoter" />海岸线网络聚合L,Q7a5\R

海岸线网络聚合jV&r"q]/Vm

        海岸线网络聚合.?,S"eCb(ZeC2x Y

r2gB R1Q ?0        <bean id="authenticationLoggerListener"

5{KA%qFi y+q~Z/mw0

\"JntoM6W0              class="org.acegisecurity.event.authentication.LoggerListener" />

~t\Q~0 海岸线网络聚合&pv^hx,E5fQa(CY

 

!A/`#Q)y2^I'r^'ZI'O0 海岸线网络聚合@Um_ y/EZ*Ah

        <bean id="authorizationLoggerListener"海岸线网络聚合NX*Ia1y"f*A7K7Uf

海岸线网络聚合 b tuVE'A"n+Y

              class="org.acegisecurity.event.authorization.LoggerListener" />
3K`0dyW&P T CB0</beans>
F)Hy3aP/V8zM0_0海岸线网络聚合j3Zt ewetDGs;v6p|

K0X+M oi1c7p01.4  测试Acegi-Demo海岸线网络聚合2A5A M)k#Z'M%D(N!i
1.4.1  在Acegi-Demo添加日志功能海岸线网络聚合T3N2T+X Z Z W
在调试程序的时候经常会遇到报错,有时候很莫名其妙不知道错在哪里,这个时候我们需要察看日志。前面我们已经将commons-logging-1.0.4.jar和log4j-1.2.13.jar导入工程中。

iZ4DY;\,K"d0 海岸线网络聚合m6F4T`H(|0K3H

只需简单配置一下就可以使用日志功能了。当然这些日志配置是通用的,也可以在以后的工程中继续使用。

U)uvm)}(O0

{f$V(m2i9ow+F+B0commons-logging.properties文件内容如下:

r:Os%D~S a0 海岸线网络聚合[&| ~2S-N

org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl

~ c0g,y"k^X-z2yp0 海岸线网络聚合 jsZ*r9X;cp

 海岸线网络聚合1xmc(mW

海岸线网络聚合w t-LXL G{5K

log4j.properties文件内容如下:海岸线网络聚合hu I3]f)Sm#T

&cu|^%c Y]0log4j.rootLogger=INFO,CONSOLE,ROLLING_FILE

4mrT[3T\.C_1U0 海岸线网络聚合P[:z_-MHIQE

#INFO,CONSOLE,ROLLING_FILE

9I;`2_7M7V-N"O0 海岸线网络聚合.v?]"uWx/A9P{7A2q{

#ERROR,ROLLING_FILE海岸线网络聚合BPD%Qa2J!z9L'a

海岸线网络聚合6Ka I/~'@,m*pD7i

 

}SB*o'n3eG-Y0 海岸线网络聚合 _g e!OZ%`$UNx!B

###################

p~ U!q3kE%[*zE0Qc0 海岸线网络聚合^)K2E b)d)N2~"h

# Console Appender

{ r5W$s"CgM0 海岸线网络聚合o4nBxYAR#t vL

###################海岸线网络聚合Z aY,ur,d4y

海岸线网络聚合fiaky)t(X*yC Y

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender海岸线网络聚合c8u-|m.@|I \

ttDmFN?+S0log4j.appender.Threshold=INFO海岸线网络聚合8g uzt*h1g O[

海岸线网络聚合0BFI1B_8`

log4j.appender.CONSOLE.Target=System.out

LDIa9\[B&b Q'\0

@o;tX{;kK0log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout

hN/N,E'NIx0 海岸线网络聚合] Tc8f7`g^$eC

log4j.appender.CONSOLE.layout.ConversionPattern= [%p] %d %c - %m%n

o~ n-?.va ^(m0 海岸线网络聚合B ?.{ y.?,Cf

 海岸线网络聚合'wn J1n!aN

m A-@.o@:@!}#NQ1V0########################

$m(e3x1[Gdq0 海岸线网络聚合Y0R`Q%_0S

# Rolling File

/Jqx Rr^ tm~0 海岸线网络聚合.S^yH,NV6dq

########################海岸线网络聚合 ^ M,n1oe)xy\

海岸线网络聚合k)}Yt Ju:iJ!Zq

log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender海岸线网络聚合{'Y c){8bx

海岸线网络聚合g I$X$Wp^-OQ;w L

log4j.appender.ROLLING_FILE.Threshold=INFO海岸线网络聚合G j:cI g(FJ9m9D"X

&i5@!x&G&j_a3Qy0log4j.appender.ROLLING_FILE.File=c:/AcegiDemo.log

i|6TfeP t+b0

+vp"o9n`5U(pw0log4j.appender.ROLLING_FILE.Append=true海岸线网络聚合mjz2[D

海岸线网络聚合4F2p3Z EM*C#rw

log4j.appender.ROLLING_FILE.MaxFileSize=5000KB

LHP3aZ+uw0

:WqUK {|W0log4j.appender.ROLLING_FILE.MaxBackupIndex=2

1C L/n;uuTo9X0

-PK$o v;~@0log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout

+f RNTpc m0 海岸线网络聚合P4j-n~T

log4j.appender.ROLLING_FILE.layout.ConversionPattern=[%p] %d %c - %m%n

s1@.G}/O{0 海岸线网络聚合V'p3Eq&J b0xC

 

8KV1wt%yEKV0 海岸线网络聚合3y*J$K1R%h

log4j.logger.org.acegisecurity=DEBUG海岸线网络聚合7@ y3WO~j!PZ
 

#]6}qu n$C[0 海岸线网络聚合j^S m xW

通过上面的配置,下面是在C盘中产生的日志文件AcegiDemo.log文件,日志文件是根据log4j来产生的。可以帮助我们分析遇到的错误和问题。通过日志的分析我们可以知道我们登陆系统的帐号root是ROLE_ADMIN角色。换一个角色就无法登陆该系统。海岸线网络聚合 E\ LWKLI p$FOM

海岸线网络聚合,F {,bL)C&kX(bz

1.4.2  创建登录页面Login.jsp
lh ?A@0Login.jsp的代码如下:海岸线网络聚合_E_&~.c1O ^

海岸线网络聚合 ?-Df3Md!W

<%@ page session="false"  pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>海岸线网络聚合cl9Sw+}6pB

海岸线网络聚合 nlZp$zc

 海岸线网络聚合hfR$w H+w

海岸线网络聚合"j#C,L+g4K"m5]sDo

<title>Acegi-Demo</title>海岸线网络聚合/p'U^}qS1yP

海岸线网络聚合`x/N.i%i{qD'pT

<html>海岸线网络聚合gSx0hx6W_dU/d'l

海岸线网络聚合)jT}6Rgsc$B

       <body>海岸线网络聚合z[&@$_N7K!E ue~

@Rn+N5?iY ^)yc0              <a href="security.jsp">受保护的页面</a>海岸线网络聚合/z e mV0F#G L,t+P#X

sg6Yb%\!_0Fd0       </body>

2q|^M O*o0 海岸线网络聚合gY]? }y? Y

</html>

a\*X)ma0 海岸线网络聚合.X-G*l3| T!H[Y

 海岸线网络聚合n8q7huG8P

U{-Cor8f0D9P0security.jsp的代码如下:

,T m-rs4j,kD"v0 海岸线网络聚合S'zD%d\;j!Wc+A

<%@ page session="false"  pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>

lA @w*ON.Ac0 海岸线网络聚合+p gZ ?4z1Ja

 

&DU_3gy0

l At"Vm+I0<title>Acegi Demo</title>海岸线网络聚合;lX[~w:J B

海岸线网络聚合Z'\ P)W&r2]NyBHC

<html>

VY ]7HD*}H2|U8p0 海岸线网络聚合Riq9RWbs

       <body>

C3onO4dxcZ0 海岸线网络聚合 I*d8G3Y4`L?

              欢迎root进入security.jsp页面,回&nbsp;<a href="index.jsp">首页</a>

i7F g]M }s:k-FS0 海岸线网络聚合4H"K.]c7L1v*a-~$j

       </body>

^!S5n-@R^#E$y5X/oi0 海岸线网络聚合-MhBVxc.R

</html>

`L})E9j&Er2gO0

2@\0dx+m_M!~H01.4.3  部署到Tomcat容器并测试
&iY4|I H4V8w)Ln0程序开发完毕后就是部署到Web容器上去了,可以选择打包成war文件,也可以直接拷贝到Tomcat的webapps文件夹下。下面是Acegi-Demo运行的效果图。海岸线网络聚合Hr%} V;ld.W![dr/D

海岸线网络聚合 R3d(rG^;i

aE-tWmb*c5DWz0j7k0

输入用户名和密码才能进入受保护的页面,在本项目中使用了Realm

g7i2S]}0

海岸线网络聚合f Ty] B

 

A!j+d@;u0

输入用户名和密码后进入security的页面。海岸线网络聚合+W7b.BmGX

o~pZhH4iJ P0

TAG: acegi 安全

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2009-07-05  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 1285
  • 日志数: 23
  • 建立时间: 2007-05-21
  • 更新时间: 2008-05-18

RSS订阅

Open Toolbar