/// <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); }
public TokenStore(string ConnectionString) { this.ConnectionString = ConnectionString; this.context = new PermissionTokenContext(ConnectionString); }