`

light-commons加入AuthFilter(权限框架)

阅读更多
把权限放在light-commons里面,犹豫了,但最终还是决定放进去。light-commons 提供的是一个轻量的工具集,权限这个常常涉及到的问题理应考虑进去。

有人问及light-commons与jakarta-commons有什么区别?开始,这个问题我自己也没有想清楚。通过几次对light-commons的更新,我找到了light-commons的定位,它是一个anti-spring-api,它与spring在同一层级,而不是与Jakarta-commons在同一层级。

spring 使用 spring-ioc 框架,以spring-bean的形式封装了诸多“拿来就用”的类。但这些类是依赖于spring-ioc运行的。

Jakarta-commons显然是提供更微粒度的封装,而我们日常只能用20%都不到的功能。

light-commons的封装是比较粗粒度的,同样旨在提供“拿来就用”的类,但这些类不需要依赖于ioc容器,是独立的,由使用者决定在何处用何种形式来调用它。当然,它也可以被用在spring架构的项目中。

最近在论坛里看到jquery和prototype之争,感觉spring的处理方式就好像jquery,实现了一个“扩展框架”,而light-commons则像prototype,只是提供了一个“API”。显然,在喜好上,还没有定论。

我在07年6月发过一个帖子《spring=画蛇添足》(被全民公投先精华后隐藏了,已经1年了,时间过得真快),虽然当时的想法有些绝对,但是我真的很想用朴素的代码来编程,即便不了解所依赖的第三方项目,通过类名、变量名、方法名就可以读懂代码。对象工厂,Context,yes,but why must spring?

扯的有些远了,来说新加入的AuthFilter吧。
AuthFilter是1年多前写的代码,这次open到light-commons中,希望能对大家有所帮助,也希望能够得到大家的反馈。

先介绍核心类AuthManager。
引用
AuthManager 下是全静态方法,采用threadlocal实现。
AuthManager.login(IUser user) -- 用户登录
AuthManager.logout()          -- 用户登出
AuthManager.getAuthentication() -- 获取证书
AuthManager.getUser()        -- 获取当前登录用户(返回IUser对象)


另外还有一个重要的接口IUser
public interface IUser {
	//获取用户被赋予的所有PermissionKeys
	Set<String> getPermissionKeys();
	//是否超级用户(可访问所有页面)
	boolean isSuperUser();
} 


接下来就可以动手了
当然首先要在web.xml中加入filter的定义,一般放在第一个过滤位置:
<filter>
	<filter-name>light-auth</filter-name>
	<filter-class>org.lightcommons.web.auth.AuthFilter</filter-class>
</filter>

<filter-mapping>
	<filter-name>light-auth</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>


其次是在 classpath 中加入 auth.properties
引用
#不受框架限制的页面
page.ignores=/;/js/*;/images/*;/verify
#登录页面,在未登陆状态请求了无权访问的页面则跳转至登录页面,并将最后一次访问的网址放入 lasturl=xxxx以便跳回
page.login=/login.html
#无权访问的页面url,在已登录状态,访问了无权访问的页面则跳转至 denied页面
page.denied=/denied.action

#PermissionKey 定义
auth.user.view=/user/view;/user/list;
auth.user.modify=/user/new;/user/save;/user/edit;/user/update;
auth.user.delete=/user/delete


然后,修改User的model,使其implement IUser。

最后,编写verify action, 在 verify方法中验证用户名、密码(这个只能自己动手了),验证成功则调用 AuthManager.login(someuser);

比如,用户如拥有 user.view 这个permissionKey,则可访问  /user/view  和 /user/list 2 个页面,如果没有这个permissionkey,则不能。
1
0
分享到:
评论
1 楼 zhenjia 2008-08-23  
关注,下载来看看 

相关推荐

    istack-commons-runtime-3.0.12-API文档-中文版.zip

    赠送jar包:istack-commons-runtime-3.0.12.jar; 赠送原API文档:istack-commons-runtime-3.0.12-javadoc.jar; 赠送源代码:istack-commons-runtime-3.0.12-sources.jar; 赠送Maven依赖信息文件:istack-commons-...

    spring-data-commons-2.0.6.RELEASE-API文档-中文版.zip

    赠送jar包:spring-data-commons-2.0.6.RELEASE.jar; 赠送原API文档:spring-data-commons-2.0.6.RELEASE-javadoc.jar; 赠送源代码:spring-data-commons-2.0.6.RELEASE-sources.jar; 赠送Maven依赖信息文件:...

    istack-commons-runtime-3.0.12-API文档-中英对照版.zip

    赠送jar包:istack-commons-runtime-3.0.12.jar; 赠送原API文档:istack-commons-runtime-3.0.12-javadoc.jar; 赠送源代码:istack-commons-runtime-3.0.12-sources.jar; 赠送Maven依赖信息文件:istack-commons-...

    spring-data-commons-2.0.9.RELEASE-API文档-中英对照版.zip

    赠送jar包:spring-data-commons-2.0.9.RELEASE.jar; 赠送原API文档:spring-data-commons-2.0.9.RELEASE-javadoc.jar; 赠送源代码:spring-data-commons-2.0.9.RELEASE-sources.jar; 赠送Maven依赖信息文件:...

    spring-cloud-alibaba-commons-2021.1-API文档-中英对照版.zip

    赠送jar包:spring-cloud-alibaba-commons-2021.1.jar; 赠送原API文档:spring-cloud-alibaba-commons-2021.1-javadoc.jar; 赠送源代码:spring-cloud-alibaba-commons-2021.1-sources.jar; 赠送Maven依赖信息...

    spring-data-commons-2.3.9.RELEASE-API文档-中文版.zip

    赠送jar包:spring-data-commons-2.3.9.RELEASE.jar; 赠送原API文档:spring-data-commons-2.3.9.RELEASE-javadoc.jar; 赠送源代码:spring-data-commons-2.3.9.RELEASE-sources.jar; 赠送Maven依赖信息文件:...

    xmlgraphics-commons-2.1-API文档-中英对照版.zip

    赠送jar包:xmlgraphics-commons-2.1.jar; 赠送原API文档:xmlgraphics-commons-2.1-javadoc.jar; 赠送源代码:xmlgraphics-commons-2.1-sources.jar; 赠送Maven依赖信息文件:xmlgraphics-commons-2.1.pom; ...

    spring-data-commons-2.5.5-API文档-中文版.zip

    赠送jar包:spring-data-commons-2.5.5.jar; 赠送原API文档:spring-data-commons-2.5.5-javadoc.jar; 赠送源代码:spring-data-commons-2.5.5-sources.jar; 赠送Maven依赖信息文件:spring-data-commons-2.5.5....

    spring-cloud-commons-3.1.1-API文档-中文版.zip

    赠送jar包:spring-cloud-commons-3.1.1.jar; 赠送原API文档:spring-cloud-commons-3.1.1-javadoc.jar; 赠送源代码:spring-cloud-commons-3.1.1-sources.jar; 赠送Maven依赖信息文件:spring-cloud-commons-...

    xmlgraphics-commons-2.1-API文档-中文版.zip

    赠送jar包:xmlgraphics-commons-2.1.jar; 赠送原API文档:xmlgraphics-commons-2.1-javadoc.jar; 赠送源代码:xmlgraphics-commons-2.1-sources.jar; 赠送Maven依赖信息文件:xmlgraphics-commons-2.1.pom; ...

    spring-cloud-alibaba-commons-2021.1-API文档-中文版.zip

    赠送jar包:spring-cloud-alibaba-commons-2021.1.jar; 赠送原API文档:spring-cloud-alibaba-commons-2021.1-javadoc.jar; 赠送源代码:spring-cloud-alibaba-commons-2021.1-sources.jar; 赠送Maven依赖信息...

    asm-commons

    asm-commons-2.0.jar, asm-commons-2.1.jar, asm-commons-2.2.1-sources.jar, asm-commons-2.2.1.jar, asm-commons-2.2.2-sources.jar, asm-commons-2.2.2.jar, asm-commons-2.2.3.jar, asm-commons-2.2.jar, asm-...

    spring-cloud-commons-3.1.1-API文档-中英对照版.zip

    赠送jar包:spring-cloud-commons-3.1.1.jar; 赠送原API文档:spring-cloud-commons-3.1.1-javadoc.jar; 赠送源代码:spring-cloud-commons-3.1.1-sources.jar; 赠送Maven依赖信息文件:spring-cloud-commons-...

    mchange-commons-java-0.2.15.jar找不到的问题的解决

    c3p0连接mysql8.0.11需要外加mchange-commons-java-0.2.15.jar,maven的pom.xml 中配置了,但是项目中报找不到mchange-commons-java-0.2.15.jar这个文件,可以把此文件下载后,然后解压后把对应的jar包放到maven 库...

    mchange-commons-java-0.2.11-API文档-中文版.zip

    赠送jar包:mchange-commons-java-0.2.11.jar; 赠送原API文档:mchange-commons-java-0.2.11-javadoc.jar; 赠送源代码:mchange-commons-java-0.2.11-sources.jar; 赠送Maven依赖信息文件:mchange-commons-java-...

    junit-platform-commons-1.8.2-API文档-中英对照版.zip

    赠送jar包:junit-platform-commons-1.8.2.jar; 赠送原API文档:junit-platform-commons-1.8.2-javadoc.jar; 赠送源代码:junit-platform-commons-1.8.2-sources.jar; 赠送Maven依赖信息文件:junit-platform-...

    asm-commons-3.3.1.jar

    asm-commons-3.3.1.jar

    junit-platform-commons-1.7.0.jar

    junit-platform-commons-1.7.0.jar

    mchange-commons-java-0.2.19.jar

    c3p0依赖包mchange-commons-java-0.2.19.jar; 特别说明:c3p0(c3p0-0.9.5.5.bin.tgz)的lib包里面含此mchange-commons-java-0.2.19.jar文件。

    spring-data-commons-2.6.1-API文档-中文版.zip

    赠送jar包:spring-data-commons-2.6.1.jar; 赠送原API文档:spring-data-commons-2.6.1-javadoc.jar; 赠送源代码:spring-data-commons-2.6.1-sources.jar; 赠送Maven依赖信息文件:spring-data-commons-2.6.1....

Global site tag (gtag.js) - Google Analytics