`

JEECMS 系统权限设计

 
阅读更多
原文地址:http://chinajweb.iteye.com/blog/1901374



JEECMS 系统权限设计

博客分类: Web开发 独解



1、用户校验.
             登录校验主要围绕着用户后台登陆的url拦截
             a.围绕着用户登录过程中设计到两张用户表
             jc_user:存储着用户的基本信息
             jo_user:存储着用户登录、注册、更新时间及用户密码信息

             b.后台用户登录负责处理的servlet是CmsLoginAct类,该类包含两个方法:
             input:根据浏览器的请求指向用户登录页面。
                 submit:用户输入账号信息登录处理method。

Java代码  收藏代码
@RequestMapping(value = "/login.do", method = RequestMethod.GET) 
    public String input(HttpServletRequest request, 
            HttpServletResponse response, ModelMap model) { 

Java代码  收藏代码
@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的校验。
Java代码  收藏代码
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

Java代码  收藏代码
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
Java代码  收藏代码
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; 
    } 

查看图片附件
分享到:
评论

相关推荐

    网站内容管理系统jeecms3

    JEECMS是国内Java版开源网站内容管理系统 1.基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 2.采用SpringMVC3+Spring3+Hibernate3+Freemarker主流技术架构 3.懂html就能建站,提供最便利、...

    JEECMS v2.3.2 Final版是JEECMS面世以来发布的第一个正式版是JEECMS面世以来发布的第一个正式

    二、核心模板全部使用文件形式保存,自由导入/导出模板,极大方便了用户模板设计、网站升级转移、全站换肤 三、首页、栏目页缓存处理,在启动了页面缓存后,有利于提高系统反应速度,降低系统资源的消耗;...

    JEECMS 2.3.1 Beta 系统程序

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 采用hibernate3+struts2+spring2+freemarker...

    JEECMS v2.2 beta 贺岁版

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 采用hibernate3+struts2+spring2+freemarker...

    jeecms 网站开发源码

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 · 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 · 采用hibernate3+spring mvc+spring2+...

    jeecms3.0.4

    JEECMS 是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点,采用hibernate3+struts2+spring2+freemarker...

    JEECMS v2012sp1源码工程包(已经导入源码的工程)

    JEECMS内容管理系统是国内java开源CMS行业知名度最高、用户量最大的站群管理系统。 · SpringMVC3+Spring3+Hibernate3+Freemarker技术架构 · 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的...

    jeecms-2.4.2(源码+安装包)

    JEECMS是国内Java版开源网站内容管理系统(java cms、jsp cms)的简称。 · 采用hibernate3+struts2+spring2+freemarker技术架构 · 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点,支持...

    jeecms v9.3 正式版 源码包.zip

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 · 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 · 采用hibernate3 spring mvc spring2 ...

    JEECMS3.0.4使用教程

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点采用hibernate3+struts2+spring2+freemarker主流...

    jeecms v3.0.1 开源jsp网站管理系统.rar

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 · 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 · 采用hibernate3 spring mvc spring2 ...

    JEECMS v3.1.0 beta

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 · 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 · 采用SpringMVC3+Spring3+Hibernate3+...

    JEEcms目前国内的cms领跑者

    JEECSM是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 ·基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 ·采用hibernate3+struts2+spring2+...

    jeecms-src.rar_com.jeec_freemarker_freemarker struts2_单点登录

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 采用hibernate3+struts2+spring2+freemarker...

    jeecms X1.4.1 正式版 源码包

    是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 · 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 · 采用hibernate3+spring mvc+spring2+freemarker...

    JEECMS v2.3.2 正式版用源码

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 采用hibernate3+struts2+spring2+freemarker...

    jeecmsv2.3.2 内容管理系统 (hibernate3+struts2+spring2+freemarker)

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 · 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 · 采用hibernate3+struts2+spring2+...

    JavaEE版网站管理系统

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 采用hibernate3+struts2+spring2+freemarker主流...

    hibernate3+struts2+spring2+freemarker 主流技术架构 实例

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 • 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 • 采用hibernate3+struts2+spring2+...

    jee cms学习文档

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 · 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 · 采用hibernate3+struts2+spring2+...

Global site tag (gtag.js) - Google Analytics