基于Web前端用户调用CSFramework.WebApi服务端登录登出接口实现
基于Web前端用户调用CSFramework.WebApi服务端登录登出接口实现
文章简介 Web前端,如Web站点、门户网站、论坛等Web网站调用WebApi业务接口必须使用令牌(Token)进行安全认证。因此用户必须先登录系统,获取令牌(Token),Web前端把令牌作为全局变量缓存起来给调用WebApi接口使用。 下面是CSFramework.WebApi后端框架的GetController控制器实现的登录登出接口: 登录接口 - LoginWeb C# Code: //路由参考:http://127.0.0.1:8899/api/gate/loginweb /// <summary> /// 用户登录(采用Token方式用户登录,用于Web端) /// </summary> /// <param name="request"></param> /// <returns></returns> [HttpPost] [ActionName("loginweb")] public ModelResponse LoginWeb(ModelRequestLogin4Web request) { ModelResponse data = new ModelResponse(); try { //登录业务逻辑 CmdLoginWeb cmd = new CmdLoginWeb(this.Request); //检查命令是否接受请求的数据 IUserResponse result = cmd.AcceptLogin(request); if (result.Code == 0) data = (ModelResponse)cmd.Login(request); else data = new ModelResponse { Code = result.Code, Message = result.Message }; } catch (ResponseException ex) { return ex.Response; } catch (Exception ex) { data = new ModelResponse(); data.Code = ErrorCodes.SystemException; data.Message = String.Format("系统异常:{0}", ex.Message); } return data; } //来源:C/S框架网 | www.csframework.com | QQ:23404761 登出接口 - LogoutWeb C# Code: //路由参考:http://127.0.0.1:8899/api/gate/logoutweb /// <summary> /// 用户登录(采用Token方式用户登录,用于Web端) /// </summary> /// <param name="request"></param> /// <returns></returns> [HttpPost] [ActionName("logoutweb")] public ModelResponse LogoutWeb(ModelRequestToken request) { ModelResponse data = new ModelResponse(); try { //登录业务逻辑 CmdLoginWeb cmd = new CmdLoginWeb(this.Request); //检查命令是否接受请求的数据 IUserResponse result = cmd.AcceptLogout(request); if (result.Code == 0) data = (ModelResponse)cmd.Logout(request); else data = new ModelResponse { Code = result.Code, Message = result.Message }; } catch (ResponseException ex) { return ex.Response; } catch (Exception ex) { data = new ModelResponse(); data.Code = ErrorCodes.SystemException; data.Message = String.Format("系统异常:{0}", ex.Message); } return data; } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 ModelRequestLogin4Web 类: Web前端用户登录必须使用ModelRequestLogin4Web类作为调用登录接口的参数。 C# Code: /// <summary> /// Web端登录接口模型。Web端不可以使用私钥以及数字签名方式登录或调用业务接口! /// </summary> public class ModelRequestLogin4Web { public ModelRequestLogin4Web() { this.Timestamp = ""; this.Password = ""; this.UserID = ""; this.ApiKey = ""; } /// <summary> /// 明文传输key,合作方身份发布给开发者 /// </summary> [JsonProperty("apikey")] public string ApiKey { get; set; } /// <summary> /// 时间戳,格式:yyyyMMddHHmmssfff,最小单位:毫秒 /// </summary> [JsonProperty("ts")] public string Timestamp { get; set; } /// <summary> /// 用户 /// </summary> [JsonProperty("userid")] public string UserID { get; set; } /// <summary> /// 密码 /// </summary> [JsonProperty("pwd")] public string Password { get; set; } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 测试登录(Login)接口 C# Code: private void btnWebLogin_Click(object sender, EventArgs e) { string url1 = "http://localhost:19893/api/gate/loginweb"; ModelRequestLogin4Web requestToken = new ModelRequestLogin4Web { ApiKey = PrivateData.apikey, UserID = "1388888888", Password = "cf79ae6addba60ad018347359bd144d2", Timestamp = DateTime.Now.ToString("yyyyMMddHHmmssfff"), }; string json2 = JsonConvert.SerializeObject(requestToken); string result3 = WebApiTools.Post(url1, json2); ModelResponse response1 = JsonConvert.DeserializeObject<ModelResponse>(result3); if (response1.DataIsEncrypted) { response1.Data = System.Web.HttpUtility.UrlDecode(response1.Data); response1.Data = CryptoHelper.DESDecrypt(response1.Data, PrivateData.DES_Key, PrivateData.DES_iv); } _User = JsonConvert.DeserializeObject<ModelUser>(response1.Data); txtResponse.Text = response1.Data; } //来源:C/S框架网 | www.csframework.com | QQ:23404761 登录接口返回的JSON数据,包含Token令牌数据。 JSON Code: { "Account":"8888888888", "Token":"D047839F-E36F-47BA-B110-815302E0A2F6", "TS":"2020-04-02 18:55", "UserName":"测试用户", "UserType":1, "Phone":"1388888888", "Status":1, "Version":"" } //来源:C/S框架网 | www.csframework.com | QQ:23404761 测试登出(Logout)接口 C# Code: private ModelUser _User = null; private void btnWebLogout_Click(object sender, EventArgs e) { if (_User == null) { MessageBox.Show("请先模拟Web端登录!"); return; } string url1 = "http://localhost:19893/api/gate/logoutweb"; ModelRequestToken requestToken = new ModelRequestToken { Timestamp = DateTime.Now.ToString("yyyyMMddHHmmssfff"), UserID = _User.Account, Token = _User.Token,//第1次登录的token }; string json2 = JsonConvert.SerializeObject(requestToken); string result3 = WebApiTools.Post(url1, json2); ModelResponse response3 = JsonConvert.DeserializeObject<ModelResponse>(result3); txtResponse.Text = result3; } //来源:C/S框架网 | www.csframework.com | QQ:23404761 CSFramework.WebApi后端服务器框架:客户端调用WebApi接口方式(签名+Token令牌) CSFramework.WebApi后端框架Token令牌工作机制以及Token刷新原理 ASP.NET WebApi快速开发框架|APP后端框架-标准版V1.0 适用开发:快速搭建APP、B/S、C/S、微信小程序、公众号、Web站点等后端应用服务程序。 运行平台:Windows + .NET Framework 4.5 开发工具:Visual Studio 2015+,C#语言 数据库:Microsoft SQLServer 2008R2+(支持多数据库:Oracle/MySql) 扫一扫加微信
参考文档:
监听WebAPI服务器所有用户请求 C/S框架网提供基于C#.NET前端Winform开发框架及后端WebApi开发框架 基于MVC架构的WebApi服务端开发框架核心优势|C/S框架网 CSFramework WebApi服务端框架成功案例-建行底层支付系统+i蜜书收银助手客户端 CSFramework WebApi服务端框架开发微信支付接口成功案例 原创产品-微信小程序APP服务端WebApi开发框架 WebApi后端框架服务端框架开发微信小程序订阅消息接口 WebApi服务端开发框架成功案例-对接三方支付平台连连支付C#.NET CSFramework.WebApi服务端开发框架平台成功案例汇总 Asp.Net开源服务端框架,WebApi后端框架标准版 微信小程序后端框架 | C# ASP.NET服务端WebApi快速开发框架平台 CSFramework.WebApi框架快速搭建后端服务支持APP、B/S、C/S、微信小程序、公众号、Web客户端 CSFramework.WebApi后端服务器框架:客户端调用WebApi接口方式(签名+Token令牌) CSFramework.WebApi开发框架模拟Web用户端登录、调用WebApi接口增删改查数据 Web端使用VUE调用WebApi接口实现用户登录及采用Token方式数据交互
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |