本次是在原有ApiTemplate项目之上,增加一个用户登录权限控制模块,用于验证ApiTemplate项目在面对一些简单问题时,如何抽象并支持未来的扩展。用户登录权限控制模块看上去很简单,但由于业余时间总是有限的。所以借助此机会实践一次用户敏捷开发。首先拆分模块,本次只实现用户登录和登出。
apitemplate项目地址:https://github.com/cqhaibin/ApiTemplate
像本次就只列出了任务的期限,而没有列出每个子阶段的期限,如:一个需求必须要经过需求分析、模块设计、代码实现等阶段。这些子阶段也需要给出具体的期限。
实现根据用户名的登录、登出接口。
接口统一使用rest api, 实现登录、登出两个接口
{ userName<string>, //用户名 password<string> //密码 }
{ isSuccess<bool>, //请求是否成功 resultCode<number>, //请求状态Code 200006:账号不存在;200001:账号被禁用;200002:密码错误 data<object>:{ token<string> //登录成功后,返回的token user<object>:{ //用户对象 realName<string>, //用户名 userName<string>, //登录名 id<int>, //用户Id config<string>, //用户扩展信息,json字符串 mobilePhone<string>, //电话号码 } } }
{ isSuccess<bool>, //请求是否成功 resultCode<number>, //请求状态Code }

class IOnlineUserMgr{ /// <summary> /// 将用户添加到在线用户列表,此方法需要对登入信息持久化 /// </summary> /// <param name="entity"></param> void Add(IUserEntity entity); /// <summary> /// 根据token移除对应的用户,此方法需要对登出信息持久化 /// </summary> /// <param name="token"></param> /// <returns></returns> bool Remove(string token); /// <summary> /// 根据用户Id移除用户,此方法需要对登出信息持久化 /// </summary> /// <param name="id"></param> /// <returns></returns> bool Remove(int id); /// <summary> /// 从持久化层恢复在线用户 /// </summary> void Load(); /// <summary> /// 获取所有在线用户 /// </summary> IList<IUserEntity> GetAll(); IUserEntity Get(int userId); }
class IUserEntity{ UserInfo UserInfo { get; } string Token { get; } /// <summary> /// 客户端信息 /// </summary> RequestClientInfo ClientInfo { get; } DateTime LoginTime { get; } DateTime ExpiredTime { get; } /// <summary> /// 用户登录配置 /// </summary> UserAuthOption Option { get; } TokenEntity GetTokenEntity(); }

原文:https://www.cnblogs.com/cqhaibin/p/12499521.html