efw框架登录与权限控制示例

示例概述

这是一个基于efw框架的Web应用程序示例,演示了完整的登录控制和权限控制功能。该示例适用于企业内部或面向互联网的Web应用,提供了纵深防御安全体系,有效防止URL直接访问和开发者工具恶意调用。

功能特性

登录控制

权限控制

安全架构:纵深防御体系

前端安全防护

通过<efw:client>标签机制防止组件被直接调用:

防护原理

安全效果

直接访问:http://app.com/MST01_inputdialog.jsp 
→ 页面能打开,但所有功能失效

正确访问:通过主页面对话框打开 → 功能正常工作

后端安全验证

服务器端会话和权限检查作为终极防线:

会话验证机制

权限检查机制

防护效果

// 黑客尝试在开发者工具中伪造请求
fetch('/app/event', {
    method: 'POST', 
    body: 'eventId=MST01_delete&userId=123'
});
 后端验证用户权限  权限不足  返回错误页面

项目结构

skeletonSample/
├── JSP页面文件/
│   ├── LG01.jsp          # 登录页面
│   ├── LG02.jsp          # 菜单页面
│   ├── LG03.jsp          # 密码找回页面
│   ├── LG04.jsp          # 密码修改页面
│   ├── MST01.jsp         # 用户管理主页面
│   ├── error.jsp         # 错误页面
│   └── 组件文件...
├── JavaScript事件文件/
│   ├── LG01_*.js         # 登录相关事件
│   ├── LG02_*.js         # 菜单相关事件
│   ├── MST01_*.js        # 用户管理事件
│   └── 全局事件文件...
├── 配置文件/
│   └── efw.properties    # 框架配置文件
└── 数据库文件/
    ├── skeletonSample.backup    # PostgreSQL备份文件
    └── ユーザマスタDDL.sql      # 用户表创建脚本

核心配置

登录控制配置 (efw.properties)

# 启用登录控制
efw.login.check = true
efw.login.key = USER_ID
efw.login.url = LG01.jsp

# 免登录页面模式
efw.outoflogin.url.pattern = LG01|LG03|LG04.jsp
efw.outoflogin.eventid.pattern = LG01|LG03|LG04|head_logout

权限控制配置 (efw.properties)

# 启用权限控制
efw.auth.check = true
efw.auth.key = USER_ID
efw.system.error.url = error.jsp

# 角色定义
efw.auth.cases = admin,user

# 管理员权限
admin.auth.pattern = ^admin.*$
admin.url.pattern = LG02|MST01.jsp
admin.eventid.pattern = LG02|MST01

# 普通用户权限
user.auth.pattern = ^((?!admin).)*$
user.url.pattern = LG02.jsp
user.eventid.pattern = LG02

安全特性详解

1. 前端组件防护机制

2. 后端会话验证

3. 权限验证流程

用户请求 → 前端组件验证 → 后端会话验证 → 后端权限验证 → 业务执行

4. 错误处理策略

数据库设计

用户主表结构:

CREATE TABLE "ユーザマスタ" (
    "ユーザID" VARCHAR(10) NOT NULL PRIMARY KEY,    -- 用户ID
    "パスワード" VARCHAR(10),                      -- 密码
    "ユーザ名" VARCHAR(20),                        -- 用户名
    "メール" VARCHAR(50),                         -- 邮箱
    "コメント" VARCHAR(200),                       -- 备注
    "初期化フラグ" INTEGER,                        -- 初始化标志
    "ロックフラグ" INTEGER,                        -- 锁定标志
    "パスワード更新日" DATE,                       -- 密码更新日期
    "作成日時" DATE,                              -- 创建时间
    "作成者" VARCHAR(10),                         -- 创建者
    "更新日時" DATE,                              -- 更新时间
    "更新者" VARCHAR(10)                          -- 更新者
);

运行要求

快速开始

  1. 恢复数据库备份或执行提供的SQL脚本
  2. 配置数据库连接参数
  3. 部署到Web服务器
  4. 访问登录页面开始使用

安全最佳实践

  1. 会话管理:设置合理的会话超时时间
  2. 密码策略:实现强密码要求和定期更换
  3. 错误处理:统一的错误页面避免信息泄露
  4. 日志记录:记录重要的安全事件
  5. 定期审计:审查权限配置和用户角色

这个示例展示了efw框架在企业级Web应用中的完整安全解决方案,通过前端防护 + 后端验证的纵深防御体系,为Web应用提供了企业级的安全保障。