157 lines
5.0 KiB
C#
157 lines
5.0 KiB
C#
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
|
||
{
|
||
/// <summary>
|
||
/// 默认控制器(此类不要动,partial类,可以在AriesController文件夹外建立自己的业务类)
|
||
/// </summary>
|
||
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<string>("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<string>(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处理
|
||
/// <summary>
|
||
/// 重写此方法时,此CheckToken的优先级>DefaultController中的静态方法CheckToken
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public override bool CheckToken()
|
||
{
|
||
string token = Query<string>("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<string>("un");
|
||
string pwd = Query<string>("pwd");
|
||
string mac = Query<string>("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
|
||
}
|
||
}
|