扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
EeSs:求一份JAVA写的通用权限管理系统的源码
创新互联成立与2013年,先为运城等服务建站,运城等地企业,进行企业商务咨询服务。为运城企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
为获取建议,你需要提供合法的E-Mail地址。
您还可以通过Baidu Hi联系我们或QQ:六伍柒幺伍六幺伍 ('幺'读 yao 一声)
根据你的需求
我们可以提供一套与需求相匹配的代码
ES:\D65AC43436A0CAF22194155F1DAECEBA
EeSs:求一份JAVA写的通用权限管理系统的源码
交易提醒:预付订金是陷阱
spring security可以实现。。不过spring要升级到3.0
tomcat6。7都能用,我有婉转班。。置于前台菜单用js隐藏也可以,用security判断角色都行,
如果按资源判断就要做acl。。这个很简单。。不过一般初学者要学会spring security至少要1,2个星期吧,如果楼主需要我可以把文档发给你,如果你直接要代码我也可以给你,但你看不懂。。建议还是看文档先把,你留个邮箱给我我发给你。。
关于权限管理,如果是网站的话,最简单的方式就是用过滤器。通过用户访问的URL进行控制。
这种方式,在写控制或网页时,不用考虑权限问题!权限由过滤器统一管理。
spring 的servlet.xml配置如下:
!-- 权限系统 拦截 --
mvc:interceptors
mvc:interceptor
mvc:mapping path="/admin/**" /
bean class="com.zmax.web.spring.AdminContextInterceptor"
!-- 开发模式,懒得登录 --
property name="devmode" value="1"/
property name="auth" value="true" /
property name="loginUrl" value="/admin/login.do" /
property name="returnUrl" value="/admin/index.do" /
property name="excludeUrls"
list
value/test.do/value
value/login.do/value
value/logout.do/value
/list
/property
/bean
/mvc:interceptor
相应的JAVA代码:
package com.zmax.utils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class AdminContextInterceptor extends HandlerInterceptorAdapter{
private static final Logger logger = Logger.getLogger(AdminContextInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
if (logger.isDebugEnabled())
logger.debug("权限预处理");
//获取用户访问的地址
String uri = getURI(request);
// 不在验证的范围内
if (exclude(uri)) {
return true;
}
AdminUser adminUser=(AdminUser)session.getAttribute(request, SessionName.ADMINUSER);
// 用户为null跳转到登陆页面
if (adminUser == null) {
if(devmode==null||devmode.equals(0)){
response.sendRedirect(getLoginUrl(request));
return false;
}
}
//如果用户权限不够,跳到登录页面
if(checkAdmin(adminUser,uri)){
response.sendRedirect(getLoginUrl(request));
return false;
}else{
//权限够了,返回true
adminUser=adminUserService.get(devmode);
session.setAttribute(request, response, SessionName.ADMINUSER, adminUser);
return true;
}
return true;
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler, ModelAndView mav)
throws Exception {
if (logger.isDebugEnabled())
logger.debug("权限处理");
}
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
if (logger.isDebugEnabled())
logger.debug("权限后处理");
}
}
思路:
1、用户表 user;
2、角色表 role;
3、菜单 menu;
4、角色菜单权限表 role_menu;
5、用户菜单权限表 user_menu;
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程[1] 。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点[2] 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等[3] 。
由于在开发Oak语言时,尚且不存在运行字节码的硬件平台,所以为了在开发时可以对这种语言进行实验研究,他们就在已有的硬件和软件平台基础上,按照自己所指定的规范,用软件建设了一个运行平台,整个系统除了比C++更加简单之外,没有什么大的区别。1992年的夏天,当Oak语言开发成功后,研究者们向硬件生产商进行演示了Green操作系统、Oak的程序设计语言、类库和其硬件,以说服他们使用Oak语言生产硬件芯片,但是,硬件生产商并未对此产生极大的热情。因为他们认为,在所有人对Oak语言还一无所知的情况下,就生产硬件产品的风险实在太大了,所以Oak语言也就因为缺乏硬件的支持而无法进入市场,从而被搁置了下来。
1994年6、7月间,在经历了一场历时三天的讨论之后,团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。他们认为随着Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。作为原型,帕特里克·诺顿写了一个小型万维网浏览器WebRunner。[4]
1995年,互联网的蓬勃发展给了Oak机会。业界为了使死板、单调的静态网页能够“灵活”起来,急需一种软件技术来开发一种程序,这种程序可以通过网络传播并且能够跨平台运行。于是,世界各大IT企业为此纷纷投入了大量的人力、物力和财力。这个时候,Sun公司想起了那个被搁置起来很久的Oak,并且重新审视了那个用软件编写的试验平台,由于它是按照嵌入式系统硬件平台体系结构进行编写的,所以非常小,特别适用于网络上的传输系统,而Oak也是一种精简的语言,程序非常小,适合在网络上传输。Sun公司首先推出了可以嵌入网页并且可以随同网页在网络上传输的Applet(Applet是一种将小程序嵌入到网页中进行执行的技术),并将Oak更名为Java(在申请注册商标时,发现Oak已经被人使用了,再想了一系列名字之后,最终,使用了提议者在喝一杯Java咖啡时无意提到的Java词语)。5月23日,Sun公司在Sun world会议上正式发布Java和HotJava浏览器。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微软等各大公司都纷纷停止了自己的相关开发项目,竞相购买了Java使用许可证,并为自己的产品开发了相应的Java平台。
struts拦截器不推荐使用 建议使用spring AOP 面向切面 统一权限操作当做一类失误处理 对于数据库权限 简单权限可以设定一张权限表 复杂权限 但权限没有从属关系可以使用2进制表示 0101010 0和1分别代表是否具有该权限操作 多级权限表结构又相应复杂
给你一个简单的管理代码
public class CheckIdAdvice implements MethodInterceptor {
protected final Log log = LogFactory.getLog(getClass());
public Object invoke(MethodInvocation invocation) throws Throwable {
String methodName = invocation.getMethod().getName();
for(int i=0;iConstant.levelOneMethod.length;i++)
{
if(Constant.levelOneMethod[i].equals(methodName))
{
Map map=(Map) ActionContext.getContext().get("session");
Admin admin=(Admin)map.get("admin");
if(admin.getQuanxian()!=nulladmin.getQuanxian()=1)
{
return invocation.proceed();
}
else
{
log.info("进入失败");
return false;
}
}
}
for(int i=0;iConstant.levelTwoMethod.length;i++)
{
if(Constant.levelTwoMethod[i].equals(methodName))
{
Map map=(Map) ActionContext.getContext().get("session");
Admin admin=(Admin)map.get("admin");
if(admin.getQuanxian()!=nulladmin.getQuanxian()=3)
{
return invocation.proceed();
}
else
{
log.info("进入失败");
return false;
}
}
}
for(int i=0;iConstant.levelThreeMethod.length;i++)
{
if(Constant.levelThreeMethod[i].equals(methodName))
{
Map map=(Map) ActionContext.getContext().get("session");
Admin admin=(Admin)map.get("admin");
if(admin!=nulladmin.getQuanxian()=5)
{
return invocation.proceed();
}
else
{
log.info("进入失败");
return false;
}
}
}
return invocation.proceed();
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流