作为一种身份验证机制,azure stodge 有机会提供有限期限的令牌。记录在用户的会话中,并在与用户一起到站点检查其有效性的过程中。最后只是提供用户再次登录。可以建议这个方案如何正确?使用 azure stodge 登录是否有类似的解决方案?
问问题
65 次
1 回答
0
对于令牌身份验证,您最好使用 OAuth 或 OAuth2。它完全符合您的要求,但您可以创建一个操作过滤器来实现相同的功能。
这是一个带有 WebApi 控制器的示例,很容易切换到 mvc 控制器。基本上,您不会在 http 标头中拥有令牌,而是在查询字符串中。
[AuthKey]
public class PurchaseController : ApiController
{
//methods
}
public class AuthKeyAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (actionContext.Request.Headers.Contains("auth-key") == false)
actionContext.Response = new System.Net.Http.HttpResponseMessage(HttpStatusCode.Unauthorized);
else
{
var token = actionContext.Request.Headers.GetValues("auth-key").First();
var sessionServices = new SessionServices();
var session = sessionServices.SearchSessionByAuthKey(token);
if (session == null || session.expirationDate < DateTime.Now)
{
actionContext.Response = new System.Net.Http.HttpResponseMessage(HttpStatusCode.Unauthorized);
return;
}
var controller = actionContext.ControllerContext.Controller;
if (controller is BaseController)
{
var baseController = (BaseController)controller;
baseController.SetThreadLocalSession(session);
}
base.OnActionExecuting(actionContext);
}
}
}
于 2013-10-10T12:10:02.267 回答