本次是在原有ApiTemplate项目之上,增加一个用户登录权限控制模块,用于验证ApiTemplate项目在面对一些简单问题时,如何抽象并支持未来的扩展。用户登录权限控制模块看上去很简单,但由于业余时间总是有限的。所以借助此机会实践一次用户敏捷开发。首先拆分模块,本次只实现用户登录和登出。
apitemplate项目地址:https://github.com/cqhaibin/ApiTemplate
一、总结放前面最小化任务范围
给任务一个期限
像本次就只列出了任务的期限,而没有列出每个子阶段的期限,如:一个需求必须要经过需求分析、模块设计、代码实现等阶段。这些子阶段也需要给出具体的期限。从外向里逐层推进
二、用户需求
实现根据用户名的登录、登出接口。
三、需求分析
四、系统设计接口设计
接口统一使用rest api, 实现登录、登出两个接口
{ userName<string>, //用户名password<string> //密码}
{ isSuccess<bool>, //请求是否成功resultCode, //请求状态Code 200006:账号不存在;200001:账号被禁用;200002:密码错误data<object>:{ token<string> //登录成功后,返回的tokenuser<object>:{ //用户对象realName<string>, //用户名userName<string>, //登录名id<int>, //用户Idconfig<string>, //用户扩展信息,json字符串mobilePhone<string>, //电话号码 } } }
{ isSuccess<bool>, //请求是否成功resultCode, //请求状态Code}
详细设计登入接口详细设计
class IOnlineUserMgr{/// /// 将用户添加到在线用户列表,此方法需要对登入信息持久化/// /// void Add(IUserEntity entity);/// /// 根据token移除对应的用户,此方法需要对登出信息持久化/// /// /// bool Remove(string token);/// /// 根据用户Id移除用户,此方法需要对登出信息持久化/// /// /// bool Remove(int id);/// /// 从持久化层恢复在线用户/// void Load();/// /// 获取所有在线用户/// IList GetAll(); IUserEntity Get(int userId); }
class IUserEntity{ UserInfo UserInfo { get; }string Token { get; }/// /// 客户端信息/// RequestClientInfo ClientInfo { get; } DateTime LoginTime { get; } DateTime ExpiredTime { get; }/// /// 用户登录配置/// UserAuthOption Option { get; } TokenEntity GetTokenEntity(); }
登出接口详细设计
五、数据字典
Copyright © 2004-2024 Ynicp.com 版权所有 法律顾问:建纬(昆明)律师事务所 昆明市网翼通科技有限公司 滇ICP备08002592号-4