使用azure存储验证站点(MVC4)

时间:2013-10-10 07:00:15

标签: asp.net-mvc azure authorization storage

作为一种认证机制,azure stodge有机会提供有限持续时间的令牌。记录在用户的会话中以及在与用户一起工作的过程中检查它的有效性。最后,只需让用户再次登录即可。 可能会建议这个方案是如何正确的? 是否有类似的解决方案使用天蓝色的躲避登录?

1 个答案:

答案 0 :(得分: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);
        }
    }
}