Eova中默认已经提供了现成的用户模块.

    未来的事情谁也不知道,可是命运往往都是不由自主的.

    需求背景:某互联网公司陆晶所,现有30W用户,现有一套后台管理系统,全部采用手工定制化开发,一般开发一个中小型模块,大约需要2-4周时间.项目经理-凯瑞,发现项目开发进度严重滞后,这种简单的数据维护系统还要搞这么久,于是经朋友推荐决定使用Eova来进行快速开发,加快项目进度.

    所以就让手下的程序员-凯文,研究一下Eova,是否能满足该公司各种开发需求,经过研究,凯文发现Eova的确挺方便,能快速搞定公司的项目需求,可以缩短成吨的时间.

    不过,公司已经有30W用户了,希望这些用户可以直接通过Eova构建的系统能直接登录.

    那么问题来了,Eova已经提供了用户表,用户登录,用户管理,咋办?咋办?咋办?

    难道友谊的小船,说翻就翻了吗?


    可以覆盖重写IndexController中的所有方法来 定制自己想要的功能

    1. public class OSSController extends IndexController {
    2. /**
    3. * 登录初始化
    4. * @param ctrl
    5. * @param user 当前登录用户数据
    6. * @param e 当前登录帐号数据集(方便取用户数据)
    7. * @throws Exception
    8. */
    9. @Override
    10. protected void loginInit(Controller ctrl, User user, Record r) throws Exception {
    11. super.loginInit(ctrl, user, r);
    12. // 例如:需要昵称字段, 直接在eova_user中添加nickname字段
    13. user.set("nickname", r.get("nickname"));
    14. // 例如:在user 身上挂载其它业务对象,以便表达式动态获取值,实现复杂的逻辑
    15. UserInfo info = UserInfo.dao.findById(user.get("id"));
    16. if (info != null) {
    17. user.put("info", info);
    18. // 页面或表达式 调用用户信息 ${user.info.nickname}
    19. }
    20. // 还可以将相关信息放入session中,在Aop中可以获取,(表达式只能${user.xxx})
    21. // ctrl.setSessionAttr("UserInfo", info);
    22. }

    同理,如果不想执行默认的登录逻辑举个栗子: 通过其它数据库的用户表比如已有用户数据表,想用业务库中的手机号+验证码进行登录,不用eova默认帐号,密码进行登录.直接覆盖重写doLogin()方法,修改登录逻辑为 查自己的用户表,判断手机号是否存在,然后短信API校验正确性, 然后登录成功,将用户put到eova_user上,见上文源码.PS:需要将角色ID冗余到业务用户表中,方便后续进行角色判定(分角色数据过滤等场景).

    需要拓展的功能可能有:

    • 白名单设置
    • 黑名单设置
    • 上次登录时间
    • 单点登录
    • ……均可通过 继承,覆盖,重写 实现个性化定制,只有你想不到了,没有你做不到的!

    PS:初级开发者不要尝试覆盖重写权限相关逻辑,可能会导致系统瘫痪,或者无法兼容后续新版本


    上面讲述如何定制化开发系统模块!下面说说前端界面的定制套路!

    用户管理是最常见会需要定制的功能.

    用户管理难点:(自定义拓展时,请认真考虑如下问题)

    • 多库,跨库
    • 跨库事务
    • 用户业务属性动态拓展
    • 未知需求Eova默认的用户管理业务逻辑介绍:(V1.6)默认为1V1主子模式用户主表(eova.eova_user)新增时,自动新增子表的用户详细信息(demo.user_info)用户主表删除自动删除关联的用户详情表子表禁止新增,禁止删除

    如果觉得默认实现不好,或者不满足需求时,可以考虑自定义用户管理

    其它可选的方案有:单表模版->Vieweova.eova_user u left join demo.user_info i where u.id = i.uidView 单表模版,跨库 连2表(好处,在一个界面展现)View新增,修改通过AOP自定义逻辑

    单表模版->Aopdemo.user_info 单表模版增加虚拟字段,帐号,密码,新增,修改,通过AOP强化,将 帐号密码入 eova.eova_user表

    完全自定义手工按需开发


    V1.6-beta4 开始新增特性-可配置自定义登录

    配置文件:/src/main/resources/default/eova.config

    1. #登录用户数据源
    2. login.user.ds = eova
    3. #登录用户表名
    4. login.user.table = eova_user
    5. #登录用户ID字段
    6. login.user.id = id
    7. #登录用户帐号字段
    8. login.user.account = login_id
    9. #登录用户密码字段
    10. login.user.password = login_pwd
    11. #登录用户角色ID字段
    12. login.user.rid = rid

    可以自由配置用什么库的什么表来登录,然后帐号,密码,角色ID 分别是啥字段都可以配置!