赞
踩
1. 不同的环境安全威胁;2. 不同的会话生存周期;3. 不同的用户权限控制体系;4. 不同级别的接口调用方式;
1. 用户在Winform系统,如C/S架构的客户端登录系统,使用系统服务;2. 用户在web浏览器端登录系统,使用系统服务;3. 用户在手机端(Android/iOS)登录系统,使用系统服务;4. 用户使用开放接口登录系统,调用系统服务;5. 用户在PC处理登录状态时通过手机扫码授权手机登录(使用得比较少);6. 用户在手机处理登录状态进通过手机扫码授权PC进行登录(比较常见);
1.原始账号密码类别2.用户名和密码3.API应用ID/KEY4.会话ID类别5.浏览器端token6.移动端token7.API应用token8.接口调用类别9.接口访问token10.身份授权类别11.PC和移动端相互授权的token
- C# Code:
-
- /// <summary>
- /// 检查当前用户的Token: 1.令牌不存在,2.令牌过期,3.令牌不同,异地用户登录(或相同用户重新登录)
- /// 验证失败抛出ResponseException异常.
- /// </summary>
- /// <param name="userID">用户编号,用户系统账号</param>
- /// <param name="token">用户令牌</param>
- public static void CheckToken(string userID, string token)
- {
- if (String.IsNullOrEmpty(userID) || String.IsNullOrEmpty(token))
- throw new ResponseException(ErrorCodes.JsonFormatInvalide, ErrorCodes.JsonFormatInvalide_Msg);
-
- //重点!!!必须使用账户判断令牌!!!
- //返回null表示过期或用户不存在
- ModelTokenUser tokenUser = TokenProvider.GetTokenByAccount(userID);
-
- //无令牌
- if (tokenUser == null)
- throw new ResponseException(ErrorCodes.TokenExpired, ErrorCodes.TokenExpired_Msg);
-
- //令牌不同,异地有用户登录
- if (tokenUser.Token != token)
- throw new ResponseException(ErrorCodes.TokenDuplicateLogin, ErrorCodes.TokenDuplicateLogin_MSG);
- }
- C# Code:
-
- /// <summary>
- /// 根据系统登录账号获取token
- /// </summary>
- /// <param name="account"></param>
- /// <returns></returns>
- public static ModelTokenUser GetTokenByAccount(string account)
- {
- if (String.IsNullOrEmpty(account))
- return null;
- else
- {
- return _data.Where(p => p.Value.Account.ToLower() == account.ToLower()).FirstOrDefault().Value;
- }
- }
ModelTokenUser类:
- C# Code:
-
- /// <summary>
- /// 用户令牌数据模型
- /// </summary>
- public class ModelTokenUser
- {
- /// <summary>
- /// 用户编号,或APP系统唯一账号(对应手机号码)
- /// </summary>
- public string Account { get; set; }
-
- /// <summary>
- /// 令牌
- /// </summary>
- public string Token { get; set; }
-
- /// <summary>
- /// 手机号码
- /// </summary>
- public string Phone { get; set; }
-
- /// <summary>
- /// 客户端信息
- /// </summary>
- public string Client { get; set; }
-
- /// <summary>
- /// 版本
- /// </summary>
- public string Version { get; set; }
-
- /// <summary>
- /// 设备编码
- /// </summary>
- public string MID { get; set; }
-
- /// <summary>
- /// 生成Token时间
- /// </summary>
- public DateTime TS { get; set; }
-
- /// <summary>
- /// 过期时间
- /// </summary>
- public int TokenExpires { get; set; }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。