public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { if (context == null) { throw new PrivilegeException((int)EnumPrivilegeException.请求上下文为空, "context is null"); } if (next == null) { throw new ArgumentNullException(nameof(next)); } //如果不是允许任意模式访问的接口 if (!context.Filters.Any(item => item is IAllowAnonymousFilter)) { var token = context.HttpContext.Request.Headers[Privilege_TOKEN]; if (string.IsNullOrWhiteSpace(token)) { throw new PrivilegeException((int)EnumPrivilegeException.未查询到该身份, "token not found"); } UserTokenDAL userTokenDAL = new UserTokenDAL(); var userToken = await userTokenDAL.FindToken(token); if (userToken == null) { throw new PrivilegeException((int)EnumPrivilegeException.用户身份令牌不存在, "token is error"); } if (DateTime.Compare(userToken.Expiration_Time, DateTime.Now) <= 0) { throw new PrivilegeException((int)EnumPrivilegeException.用户身份令牌过期, "token is expiration"); } await next.Invoke(); } }
/// <summary> /// GetNewToken /// </summary> /// <param name="userFid"></param> /// <returns></returns> public string GetNewToken(Guid userFid) { ///TOKEN超时时间 string userTokenExpireMinute = new ConfigDAL().GetValueByCode("USER_TOKEN_EXPIRE_MINUTE"); if (!int.TryParse(userTokenExpireMinute, out int tokenExpireMinute)) { tokenExpireMinute = 120; } ///获取有无未过期的TOKEN UserTokenInfo info = new UserTokenDAL().GetInfo(userFid); if (info == null) { info = new UserTokenInfo(); info.Fid = Guid.NewGuid(); ///GUID去掉- info.Token = info.Fid.GetValueOrDefault().ToString().Replace("-", string.Empty); /// info.DisableDate = DateTime.Now.AddMinutes(tokenExpireMinute); info.CreateDate = DateTime.Now; info.CreateUser = "******"; info.ValidFlag = true; if (dal.Add(info) == 0) { return(string.Empty); } return(info.Token); } /// dal.UpdateInfo("" + "[DISABLE_DATE] = N'" + DateTime.Now.AddMinutes(tokenExpireMinute) + "'," + "[MODIFY_DATE] = GETDATE()," + "[MODIFY_USER] = N'#TOKEN_CREATER'", info.Id); return(info.Token); }