Пример #1
0
 /// <summary>
 /// 初始化数据库
 /// </summary>
 public void InitDatabase()
 {
     using (var db = new PermissionTokenContext(this.ConnectionString))
     {
         // 检测是否存在数据库,如果存在,则不作操作,如果 不存在,则生成数据库
         db.Database.EnsureCreated();
     }
 }
        /// <summary>
        /// 生命周期:获取控制器Attribute之前
        /// </summary>
        /// <param name="context">Http上下文对象</param>
        public virtual string BeforeGetControllerAttribute(HttpContext context)
        {
            using (var db = new PermissionTokenContext(this.ConnectionString))
            {
                // 检测是否存在数据库,如果存在,则不作操作,如果 不存在,则生成数据库
                db.Database.EnsureCreated();
            }

            // 根据头部Token字符串(ltoken)获取当前权限
            if (context.Request.Headers.ContainsKey("ltoken"))
            {
                // 判断是否能从Header中获得到ltoken
                TokenStore tokenStore = new TokenStore(this.ConnectionString);
                // 获得当前token字符串的权限字符串
                this.RoleStr = tokenStore.GetRoleByTokenStr(context.Request.Headers["ltoken"]);
            }
            // 根据url参数中,获得Token字符串(ltoken),再获取当前权限(不推荐)
            else if (context.Request.Query.ContainsKey("ltoken"))
            {
                // 判断是否能从Query中获得到ltoken
                TokenStore tokenStore = new TokenStore(this.ConnectionString);
                // 获得当前token字符串的权限字符串
                this.RoleStr = tokenStore.GetRoleByTokenStr(context.Request.Query["ltoken"]);
            }

            /*
             * 尝试在Query中uid
             * 绝大部分情况下,为了安全着想
             * 请尽量不要使用这种获取验证的方式,推荐头部附带Token字符串进行身份验证
             */
            //else if (context.Request.Query.ContainsKey("uid"))
            //{
            //    // 判断是否获得到uid
            //    TokenStore tokenStore = new TokenStore(this.ConnectionString);
            //    // 获得当前token字符串的权限字符串
            //    this.RoleStr = tokenStore.GetRoleByUid(context.Request.Query["uid"]);
            //}
            else
            {
                this.RoleStr = null;
            }
            return(this.RoleStr);
        }
Пример #3
0
 public TokenStore(string ConnectionString)
 {
     this.ConnectionString = ConnectionString;
     this.context          = new PermissionTokenContext(ConnectionString);
 }