using CYQ.Data.Cache; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Dynamic; using System.Text; using Taurus.Core; namespace PeiXun.Controllers { /// /// 默认控制器(此类不要动,partial类,可以在AriesController文件夹外建立自己的业务类) /// public partial class DefaultController : Controller { [HttpGet] public override void Default() { Write("Construction..."); } /* */ //本方法可以在其它文件里实现(partial类) public static bool CheckToken(IController controller, string methodName) { //controller.CheckFormat("token Can't be Empty", "token"); ////实现Token验证 ////controller.Write(methodName + " NoToken"); //return true; DistributedCache cache = DistributedCache.Instance; //cache.Set("xxxx","12345678",1); string token = controller.Query("token"); bool result = false; if (!string.IsNullOrEmpty(token)) { result = token.ToUpper().StartsWith("XYL:"); string tokenX = ""; if (result) { tokenX = token.Substring(4); } if (cache.Get(tokenX) == null) { controller.Write("token 无效!", false); return false; } //else //controller.Write(cache.Get(tokenX)); } if (!result) { controller.Write("can't find token!", false); } return result; } public static bool BeforeInvoke(IController controller, string methodName) { if (controller.IsHttpPost) { //拦截全局处理 controller.Write(methodName + " NoACK"); } return true; } } public partial class DefaultController : Controller { #region Token处理 /// /// 重写此方法时,此CheckToken的优先级>DefaultController中的静态方法CheckToken /// /// public override bool CheckToken() { string token = Query("token"); bool result = false; if (!string.IsNullOrEmpty(token)) { byte[] data = Convert.FromBase64String(token); string text = System.Text.Encoding.UTF8.GetString(data); result = text.ToUpper().StartsWith("XYL:"); } if (!result) { Write("can't find token!", false); } return result; } //返回数据: //status:10账号错误;11密码错误;1登陆成功;0未知错误 //{status:1;token:”xxxxxxxxxxxxxxxxx”} public void GetToken() { try { //CheckFormat("{0}不能为空&{0}格式错误", @"un&用户名&^1[3|4|5|8][0-9]\d{8}$", @"pwd&密码&^[\u0391-\uFFE5]+$"); string userName = Query("un"); string pwd = Query("pwd"); string mac = Query("mac"); mac = mac == null ? "" : mac; //Common.WriteMyLog("账号:" + userName + "Mac:" + mac); //int ret = (new SysUserBLL()).Login(userName, pwd); int ret = 0; dynamic obj = new ExpandoObject(); if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(pwd) && ret == 1) { byte[] data = System.Text.Encoding.UTF8.GetBytes("LeaderMIS:" + userName); string base64 = Convert.ToBase64String(data); obj.status = 1; obj.token = base64; obj.memo = "登陆成功"; Write(JsonConvert.SerializeObject(obj)); } else if (ret == 10) { obj.status = 10; obj.token = ""; obj.memo = "账号错误"; Write(JsonConvert.SerializeObject(obj)); } else if (ret == 11) { obj.status = 11; obj.token = ""; obj.memo = "密码错误"; Write(JsonConvert.SerializeObject(obj)); } else { obj.status = 0; obj.token = ""; obj.memo = "登陆异常"; Write(JsonConvert.SerializeObject(obj)); } } catch (Exception ex) { //Common.WriteMyLog(ex.ToString()); } } #endregion } }