1、用户校验.
登录校验主要围绕着用户后台登陆的url拦截
a.围绕着用户登录过程中设计到两张用户表
jc_user:存储着用户的基本信息
jo_user:存储着用户登录、注册、更新时间及用户密码信息
b.后台用户登录负责处理的servlet是CmsLoginAct类,该类包含两个方法:
input:根据浏览器的请求指向用户登录页面。
submit:用户输入账号信息登录处理method。
@RequestMapping(value = "/login.do", method = RequestMethod.GET) public String input(HttpServletRequest request, HttpServletResponse response, ModelMap model) {
@RequestMapping(value = "/login.do", method = RequestMethod.POST) public String submit(String username, String password, String captcha,String processUrl, String returnUrl, String message, HttpServletRequest request, HttpServletResponse response, ModelMap model) {
这里从submit展开,该方法中主要包含3个操作:
第一个就是用户的username、password的校验。
public UnifiedUser login(String username, String password, String ip) throws UsernameNotFoundException, BadCredentialsException { UnifiedUser user = getByUsername(username);//根据用户取得jo_user if (user == null) { throw new UsernameNotFoundException("该用户未注册: " + username); } //无需加密后比较 //TODO DavidfINCH //if (!pwdEncoder.isPasswordValid(user.getPassword(), password) && !user.getPassword().equals(password)){ //不再启用暗文! if (!user.getPassword().equals(password)) {//将取来的用户的密码和request获取的密码进行比较,如果成功则返回jo_user updateLoginError(user.getId(), ip); throw new BadCredentialsException("密码错误!"); } if (!user.getActivation()) { throw new BadCredentialsException("该用户信息需激活!"); } updateLoginSuccess(user.getId(), ip); return user; }
获取到用户信息后将用户的认证信息保存到数据库中,同时产生一个认证key,放入到session
UnifiedUser user = unifiedUserMng.login(username, password, ip); Authentication auth = new Authentication(); auth.setUid(user.getId()); auth.setUsername(user.getUsername()); auth.setEmail(user.getEmail()); auth.setLoginIp(ip); save(auth); session.setAttribute(request, response, AUTH_KEY, auth.getId());
第二个是从认证表中的取得的user_id ,再获取jc_user
最后根据传入的returnurl将direct到index.do去处理。
2、url校验
在整个过程中AdminContextInterceptor都对url进行拦截处理。
主要步骤:
从session中取得cmsUser也就是jc_user的信息。
比较url和user.getPerms
private boolean permistionPass(String uri, Set<String> perms, boolean viewOnly) { String u = null; int i; for (String perm : perms) { if (uri.startsWith(perm)) { // 只读管理员 if (viewOnly) { // 获得最后一个 '/' 的URI地址。 i = uri.lastIndexOf("/"); if (i == -1) { throw new RuntimeException("uri must start width '/':" + uri); } u = uri.substring(i + 1); // 操作型地址被禁止 if (u.startsWith("o_")) { return false; } } return true; } } return false; }
相关推荐
1. 基于MVC架构:Jeecms采用Model-View-Controller设计模式,使得业务逻辑、数据模型与用户界面分离,提高了系统的可维护性和扩展性。 2. 数据库无关性:Jeecms支持多种数据库,包括MySQL、Oracle、SQL Server等,这...
Jeecms内容管理系统是一款专为网站内容管理设计的开源软件,它提供了强大的后台管理功能,包括文章发布、图片管理、用户管理、权限控制等。在深入理解Jeecms之前,我们首先需要关注的是如何顺利地编译其源码,因为这...
Jeecms系统源码是基于SSH(Struts2、Spring、Hibernate)架构开发的一款内容管理系统。SSH是一个流行的企业级Java应用框架,它整合了这三个强大的开源框架,为开发者提供了便捷的开发工具和高效的开发模式。 Struts...
Jeecms采用了模块化的设计思路,将内容管理、用户管理、权限控制、模板管理等多个核心功能拆分为独立的模块,便于开发者根据需求进行选择和集成。 3. **内容管理** 内容管理是Jeecms的核心功能,支持多级分类、...
### JEECMS 2012 系统使用手册核心知识点总结 #### 一、系统简介 JEECMS是一款基于Java EE技术栈构建的内容管理系统(Content Management System, CMS),旨在为用户提供一套完整且易于操作的网站建设解决方案。该...
JEECMS是一款开源的Java CMS(内容管理系统),设计目标是提供高效、稳定、易用的网站解决方案。它集成了内容发布、用户管理、论坛、博客等多种功能,适合构建各类企业、政府、教育等网站。 2. **jeecms发展历程**...
3. **安全性**:作为电子商务系统,JEECMS可能涉及用户登录、权限控制、会话管理等安全机制,如Spring Security或Apache Shiro的集成。 4. **模板引擎**:JSP页面可能使用了模板引擎(如FreeMarker或Velocity),以...
【CMS程序】JEECMS 2.4.2 系统程序是一款基于Java技术和JSP(JavaServer Pages)的应用程序,适用于构建内容管理系统。这款源码Demo是几年前的作品,主要目的是为了帮助计算机科学与技术专业的学生进行毕业设计学习...
JSP CMS系统如JEECMS,是网站内容管理的一种解决方案,它提供了诸如文章发布、用户管理、权限控制、模板设计、SEO优化等核心功能。这种系统通常包括前端用户界面和后台管理界面,前者为访客提供内容展示,后者则为...
1. Jeecms系统介绍 Jeecms旨在提供一个高效、稳定、易用的内容管理解决方案。其主要特点如下: 1.1 关于Jeecms Jeecms的核心设计理念是模块化和可扩展性,使得开发者能够快速构建和维护企业级网站。它不仅包含了...
通过学习和实践Jeecms,不仅可以掌握Web开发的基本技能,还能深入理解内容管理系统的设计原理,这对于想要从事网站开发或者希望提升自己在企业级项目中能力的学生来说,是一份宝贵的资源。同时,Jeecms的开源性质也...
JEECMS是国内Java版开源网站内容管理系统 1.基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 2.采用SpringMVC3+Spring3+Hibernate3+Freemarker主流技术架构 3.懂html就能建站,提供最便利、...
JEECMS 作为一个基于 Java 的内容管理系统,具有强大的功能和灵活的架构。阅读 JEECMS 的源码,可以了解到其内部的实现机制和设计理念。在本文中,我们将对 JEECMS 2.0 版本的源码进行阅读和分析,了解其核心组件、...
【Jeecms 9.2-adminVue:一个增强型的内容管理系统】 Jeecms是一个高度可定制的、基于Java技术的内容管理系统(CMS),以其强大的功能和灵活性受到开发者的青睐。9.2-adminVue版本是对该系统的一次重大更新,相较于...
2. **自定义对象流程(jeecms系统_自定义对象流程.doc)** 自定义对象流程是指在Jeecms中创建和管理自定义业务流程的能力。这可能涉及到工作流引擎的集成,使得管理员或开发人员可以根据业务需求定制审批流程、内容...
这个压缩包很可能是包含了Jeecms系统最新的数据库脚本,用于快速初始化和设置数据库环境。 1. 数据库模型:Jeecms的数据库模型是其核心组成部分,它定义了系统中各种内容、用户、权限等对象的数据结构。这些模型...
Jeecms是一款基于Java技术的开源内容管理系统,它以其高效、稳定、易用的特点,在国内IT行业中被广泛应用。本文将围绕“Jeecms文档”这一主题,深入解析Jeecms二次开发的相关知识点。 首先,Jeecms的核心特性在于其...
1. **多层架构设计**:JEECMS采用了MVC(Model-View-Controller)模式,实现了业务逻辑、数据访问和用户界面的分离,便于开发和维护。 2. **模板引擎**:JEECMS提供了一套强大的模板引擎,允许开发者通过HTML和简单...
通过分析这些表及其字段,我们可以深入了解 Jeecms 3.0.2 的数据模型,包括如何组织内容、管理用户权限、处理扩展功能以及系统运行时的监控。这对于定制开发、性能优化、数据迁移等任务都是至关重要的。 在实际使用...
这个"jeecms3.2.2版本源码包"包含了Jeecms系统的核心源代码,允许开发者深入理解其工作原理并进行自定义修改。以下是关于Jeecms 3.2.2版本源码的一些关键知识点: 1. **Java技术栈**:Jeecms是用Java语言编写的,...