C# webservice怎么维护手机app传来的token

最近由于项目需要在写webservice用于手机app调用,在登录这块遇到安全的问题,要求是在webservice里写一个token用于存储用户的登录信息,貌似还要存储文件什么的,但是在webservice里怎么写,能不能给个code的例子

一.用户凭据拦截器
1.从app请求的头部获取token
2.判断token是否有效
3.如果无效返回401 有效顺利进入controller和action
二.登录操作
1.获取前端传入的账号和密码(最好是加密的)
2.服务端校验用户和密码(解密的)是否有效
3.如果无效提示他, 有效则创建token
4.将创建的token 放在response里返回
5.app存token 每次请求携带此token
--拦截器代码

 public class AuthFilter: ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (!SkipAuthorization(context) && !this.IsAuthorized(context))
            {
                this.HandleUnauthorizedRequest(context);
            }
            else
            {
                base.OnActionExecuting(context);
            }
        }

        /// <summary>
        /// 是否有授权
        /// </summary>
        /// <param name="actionContext"></param>
        /// <returns></returns>
        protected virtual bool IsAuthorized(ActionExecutingContext actionContext)
        {
            var auth = ServiceUtil.GetServiceProvider<IAuthentication>();
            var user = auth.GetCurrentUser(actionContext.HttpContext);
            return user != null;
        }

        /// <summary>
        /// 处理未授权的请求
        /// </summary>
        /// <param name="actionContext"></param>
        protected virtual void HandleUnauthorizedRequest(ActionExecutingContext actionContext)
        {
            var actionr = new PrincpilUser();
            actionContext.HttpContext.Response.StatusCode = 401;
            actionContext.Result = actionr;
        }

        private static bool SkipAuthorization(ActionExecutingContext actionContext)
        {
            var controllerActionDescriptor = actionContext.ActionDescriptor as ControllerActionDescriptor;
            var isAllowAnonymous = controllerActionDescriptor.MethodInfo.GetCustomAttributes(inherit: true)
                 .Any(a => a.GetType().Equals(typeof(AllowAnonymousAttribute)));
            return isAllowAnonymous;
        }

    }
    class PrincpilUser : ActionResult
    {
        public string msg = "您没有访问权限!";
    }

--此处通过AOP注入了不同的认证方式所以判断token是在IAuthentication 中做的
--登录的action中

//生成token
 string token = CreateToken(model);
//将token放入Header中
HttpContext.Response.Headers.Add("Token", token);

--CreateToken 方法里会将token 放到redis,便于拦截器快速读取并验证

纯手敲,望采纳, 可随时沟通