.Net EF Core接口token生成

新建控制器,上篇我们文章说到接口登录验证在FilterConfig加上了过滤器,这就对当前项目所有方法进行登录验证拦截。所以生成Token方法需加上允许通过标记,即[AllowAnonymous],具体如下:

 public JsonResult GetToken(string userName, string passWord)
         { 
//userName 为用户名 passWord为密码
List<TokenAccountEntity> dtp = TokenAccountService.GetLoginData(userName, passWord);//查询出当前用户名、密码的用户信息

        if (dtp.Count() > 0)
        {
            Guid guid = Guid.NewGuid(); //实例化一个Guid

            TokenAccountEntity user = new TokenAccountEntity //往实体类中新增数据
            {
                 Id= dtp[0].Id,
                 UserName = userName,
                 PassWord = passWord
            };

            Dictionary<string, object> dictionary = HttpRuntime.Cache["token"] as Dictionary<string, object> ?? new Dictionary<string, object>();  

            dictionary.Add(guid.ToString(), user);//插入数据

            HttpRuntime.Cache.Insert("token", dictionary); //定义token名,插入数据
            return SuccessResult(new
            {
                authToken = guid.ToString()   //返回实例话的Guid,这里的名字为了区分特意取的authToken,我们只需要取返回的Guid值带到需要用的其他接口中即可
            });
        }
        else
        {
            return FailResult("登录信息错误");

        }
    }

获取to­ken信息方法如下:

string token = Request.Headers[“token”];
if (string.IsNullOrEmpty(token))
token = Request.Form[“token”];
if (string.IsNullOrEmpty(token))
token = Request.QueryString[“token”];
Dic­tio­nary dic­tio­nary = HttpRuntime.Cache[“token”] as Dic­tio­nary ?? new Dic­tio­nary();
Toke­nAc­coun­tEn­ti­ty user = dictionary[token] as TokenAccountEntity;//根据插入时的实体类而定

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注