缓存数据库导致WebAPI身份验证

时间:2013-01-31 22:20:31

标签: asp.net authentication caching asp.net-web-api

我正在使用ASP.NET WebApi创建RESTful Web服务。我要求所有传入的请求都通过SSL,因为我将使用基本HTTP身份验证。客户端负责在请求标头中包含凭据,Web服务将在每个请求上对客户端进行身份验证。

实际身份验证需要进行数据库调用。有没有办法缓存数据库结果(用户名和密码),这样我就不必为在短时间内发生的每个传入请求进行数据库调用?

因此,当Web服务中出现请求时,将在缓存中查找用户名/密码组合。如果找到它将处理请求。如果找不到,它将使数据库调用进行身份验证,然后将用户名/密码添加到缓存中。

1 个答案:

答案 0 :(得分:2)

我能想到的最简单的缓存就是使用System.Web.Caching。下面是一个极为简化的版本,它将值添加到当前缓存中,然后检索它以进行处理。我不建议按原样使用此代码。

// GET api/values/5
[HttpGet]
public string GetValue(int id)
{
    HttpContext.Current.Cache.Insert("2", "test1");

    var value = Convert.ToString(HttpContext.Current.Cache.Get(id.ToString()));

    return !string.IsNullOrEmpty(value) ? value : "nothing found";
}