一个简单的webapi中的token验证。请问除了请求头header,cookied方式以上,如何用缓存的方式实现。
以下是请求头方式,token值存入了header,服务端验证时调用它然后验证时间有效性。
var authHeader = context.Request.Headers.FirstOrDefault(a => a.Key == "ApiAuthorization")controler: [ApiActionAuth]
[HttpPost]获取token方法: public string GetToken()
{
…………
return token;
}
请问改为缓存方式,如何做。
以下是请求头方式,token值存入了header,服务端验证时调用它然后验证时间有效性。
var authHeader = context.Request.Headers.FirstOrDefault(a => a.Key == "ApiAuthorization")controler: [ApiActionAuth]
[HttpPost]获取token方法: public string GetToken()
{
…………
return token;
}
请问改为缓存方式,如何做。
解决方案 »
- MVC里的预防跨站伪造请求的那个Filter没用啊
- 我就返回一条记录怎么绑定水晶报表
- 搜索问题
- BulletedList 问题
- session接值不一样
- 我有一个邦定好的CheckBoxList控件如何提交获取所有的选定向的邦定的DataValueField值[我先感谢各位高手了]
- 请问关于ODBC连接,怎么连不上,错在哪?好急!!!
- 大家帮我看看错在哪里,向数据库插入数据的问题
- 原先在.net Framework1.0下的asp.net项目,在Framework 1.1下可以运行吗?
- 一个小问题,如何在关闭浏览器或则异常退出时,弹出一个隐藏窗口!
- EWS API 使用的问题
- .net4.0怎么取特性传的值?
string settoken()
{
var guid=guid.newid().tostring();
redishelper.add<string>(guid,guid,2小时);
return guid;
}
然后把这个guid返回给客户端return new json(new {token=settoken(),time=now+2小时});
不过呢 一般来说 存token的时候 会把userinfo带上.
redishelper.add<userinfo>(guid,loginuserinfo,2小时);
然后来说一般都是通过authHeader来取用户了.
var user=redishelper.get<userinfo>(authHeader);
if(user==null)
{
throw new exp...("登陆已过期...");
}
return user;
整体的实现方式 大概就是这种了
记得设置过期时间
你这个token也要给让用户传递给你的。
你可以使用 jwt模式的,就是把token存放在head头,不过还需要另外两个要素进行加密。
当然,也可以直接就把token给用户,客户端和服务器端都要缓存一下。设置一个过期时间。
uuid+md5就好了