把权限放在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,则不能。
分享到:
相关推荐
赠送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-...
赠送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依赖信息文件:...
赠送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-...
赠送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依赖信息文件:...
赠送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依赖信息...
赠送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依赖信息文件:...
赠送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依赖信息...
赠送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....
赠送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-...
赠送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; ...
赠送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; ...
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-...
赠送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-...
赠送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-...
c3p0连接mysql8.0.11需要外加mchange-commons-java-0.2.15.jar,maven的pom.xml 中配置了,但是项目中报找不到mchange-commons-java-0.2.15.jar这个文件,可以把此文件下载后,然后解压后把对应的jar包放到maven 库...
赠送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-...
赠送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-...
junit-platform-commons-1.7.0.jar
mchange-commons-java.jar 各个版本,免费下载 mchange-commons-java.jar 是一个java 开发库, 提供许多常用的工具类和功能,包括数据库连接池、线程池、反射、集合操作等。
asm-commons-3.3.1.jar