新建控制器,上篇我们文章说到接口登录验证在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("登录信息错误");
}
}
获取token信息方法如下:
string token = Request.Headers[“token”];
if (string.IsNullOrEmpty(token))
token = Request.Form[“token”];
if (string.IsNullOrEmpty(token))
token = Request.QueryString[“token”];
Dictionary dictionary = HttpRuntime.Cache[“token”] as Dictionary ?? new Dictionary();
TokenAccountEntity user = dictionary[token] as TokenAccountEntity;//根据插入时的实体类而定