网站没什么很复杂的权限控制,用户分几个等级。我使用了一个最懒的实现方式,不同等级的页面规定的ServletPath都以不同的开头来标示。打个比方,${pageContext.request.contextPath}/public/xx.do任何人都可以进入,${pageContext.request.contextPath}/contracted/xx.do只能是登录用户可以进入等等..
public class MyRequestProcessor extends RequestProcessor {
public void process(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
try {
super.process(request, response);
} finally {
}
//这里可以做N多的事情,比如如果用JDO,可以在这里确保pm被关闭,context被释放等等。。
}
protected boolean processRoles(HttpServletRequest request,
HttpServletResponse response, ActionMapping mapping)
throws IOException, ServletException {
String path = request.getServletPath();
if (path.startsWith("/public"))
return true;
if (!authenticate(request, response, mapping))
return false;
return authorize(request, response, mapping);
}
public boolean authenticate(HttpServletRequest request,
HttpServletResponse response, ActionMapping mapping)
throws IOException, ServletException {
UserVO user = PrizoneUtil.getCurrentUser(request);
if (user != null) {
return true;
} else {
ForwardConfig forwardConfig = moduleConfig.findForwardConfig("登陆Forward");
if (forwardConfig == null) {
throw new ServletException("登陆页面配制错误");
}
this.processForwardConfig(request, response, forwardConfig);
return false;
}
}
public boolean authorize(HttpServletRequest request,
HttpServletResponse response, ActionMapping mapping)
throws IOException, ServletException {
UserVO user = request.getSession().getAttribute("User");
String path = request.getServletPath();
if (path.startsWith("/contracted")
&& (Constants.USER_ROLE_NORMAL.equals(user.getRole())
|| Constants.USER_ROLE_VIP.equals(user.getRole())
|| Constants.USER_ROLE_NET_MASTER
.equals(user.getRole()) || Constants.USER_ROLE_ADMINISTRATOR
.equals(user.getRole()))) {
return true;
} else if (path.startsWith("/protected")
&& (Constants.USER_ROLE_NET_MASTER.equals(user.getRole()) || Constants.USER_ROLE_ADMINISTRATOR
.equals(user.getRole()))) {
return true;
} else if (path.startsWith("/private")
&& Constants.USER_ROLE_ADMINISTRATOR.equals(user.getRole())) {
return true;
} else {
ForwardConfig forwardConfig = moduleConfig
.findForwardConfig("xxx");
if (forwardConfig == null) {
throw new ServletException("xxx page is not defined");
}
this.processForwardConfig(request, response, forwardConfig);
return false;
}
}
}
然后在struts-config.xml里配制一下
<controller processorClass="com.tianhui.web.action.MyRequestProcessor" nocache="true" />
分享到:
相关推荐
基于PaddleOCR开发懒人精灵文字识别插件,使用方式可以查看该文章https://blog.csdn.net/YY007H/article/details/128247582
"懒人系统管理工具"是一款专为用户设计的便捷式系统管理应用,旨在简化日常的计算机维护工作,让不熟悉复杂系统操作的用户也能轻松管理自己的电脑。这款工具集成了多种实用功能,如系统设置快捷入口、性能优化、清理...
懒人的win系统管理教程
懒人精灵懒人精灵懒人精灵懒人精灵懒人精灵懒人精灵
这个系统基于PHP语言开发,充分利用了PHP的灵活性和高效性,为用户提供了一个直观、易用的界面,使得建站过程如同拖曳元素般简单。 在PHP建站程序的世界里,懒人快速建站管理系统具有以下主要特点: 1. **拖曳式建...
懒人工资人事管理系统 是一套功能强大通用性极强的人事及工资管理系统,完善的人事档案管理、支持员工照片管理,人员增加、调动。工资项目及计算公式自由设定,可以设立40项工资项目。提供万能人事、工资查询,支持...
5. **使用场景**:考虑到CAD软件广泛应用于建筑、机械、电子工程等领域,"懒人许工具"可能包含了一系列适用于这些领域的功能,比如自动标注、尺寸测量、图块管理、布局设置等。这些功能将帮助设计师快速完成常见的...
懒人工作通OA管理软件 v5.7.0 SqlServer版 面向中小企业的免费版本,易于安装维护,安全便捷,支持虚拟主机空间。 郑重承诺:本系统无任何后门及其他流氓手段。 =================================================...
6. **图像识别与处理**:在某些场景下,基于图像识别的自动化可能更为实用,懒人插件可能集成了图像识别技术,帮助用户识别和点击屏幕上的图像元素。 7. **文件操作与网络通信**:懒人插件可能增加了对文件系统和...
A light,网盘文件,本人亲测可用,连接永久有效 docker ubuntu. docx Docker Chrome Node. docx PNET 4.0.2 SD-WAN Lab_For- Dummies _By_ Doge. ova ...he docker wireshark.docx Ubuntu Desktop....
描述中提到的“方便懒人不想制作后台管理界面”,暗示了这个资源可能是一个预设计的、现成的后台模板,适用于那些希望快速构建后台管理系统,而不愿花费大量时间在界面设计上的开发者或团队。动易是一家知名的中国...
"懒人工具箱V1.0(懒人专用)"是一款专为不熟悉或不愿进行复杂操作的用户设计的实用工具集合。它旨在简化日常电脑使用中的各种任务,让用户能够快速、简便地完成一些常见的系统管理和优化工作。尽管这款工具箱可能...
【标题】懒人精灵源码 懒人精灵源码是一个重要的软件或插件项目,它可能涉及编程语言、软件工程、自动化工具等多个IT领域的知识点。从"懒人精灵"这个名字可以推测,它可能是为了简化用户操作,提高效率而设计的一款...
全面的个人电脑windows安全设置,包含很多windows操作系统特性和系统设置,看完可以做管理员了
这是一个基于PHP技术构建的自适应多终端懒人网址导航系统的源码包。PHP是一种广泛使用的开源脚本语言,尤其在Web开发领域中占有重要地位。它具有语法简单、学习曲线平缓、功能强大且可扩展性强的特点,因此成为了...
懒人工作通 采用基于WEB的企业计算,采用了世界上最先进的微软技术:C#语言、SqlServer/Access数据库引擎和IIS服务器,性能稳定可靠。数据存取集中控制,避免了数据泄漏的可能。提供数据备份工具,保护系统数据...
本系列为懒人版工具箱,注解丰富,逻辑清晰,移植方便,便于学习和使用,初次上手请参考示例代码。
这个"struts2springibatis整合包.rar"是一个预配置好的项目包,旨在帮助开发者快速搭建基于这三大框架的应用,避免手动配置和整合过程中可能出现的问题,从而提升开发效率。 Struts2作为经典的MVC框架,主要用于...
宝塔面板是一款流行的Linux服务器管理软件,它提供了图形化的操作界面,使得服务器的管理和维护变得更加简单。在宝塔环境中,你可以便捷地进行网站部署、数据备份、安全设置等一系列操作。 安装过程大致分为以下几...
它基于ObjectArx开发,这是一个由Autodesk提供的C++开发环境,用于创建与AutoCAD紧密集成的应用程序。ObjectArx允许开发者直接访问AutoCAD的底层数据结构和API,从而能够创建功能强大且性能卓越的插件。 这款计算器...