如何在保持身份验证功能以实现按请求身份验证的同时禁用ServiceStack会话

时间:2012-11-28 01:15:05

标签: .net authentication servicestack basic-authentication

我正在尝试强制执行每个请求身份验证,但是通过添加AuthFeatureSessionFeature会自动添加,这似乎会缓存身份验证结果(我没有多次调用{{ 1}}来自同一客户端的请求。)

我已尝试评论IUserAuthRepository.TryAuthenticate中添加的SessionFeature,但似乎没有效果,仍会创建会话?此外,在AuthFeature构造函数中,我为会话工厂传递null,并且仍然创建会话。我希望这可以不创建会话,或抛出异常?无论如何,我将继续探索这个领域,但是为了在这个项目上取得进展,我只需要知道如何使用内置的身份验证提供程序进行每请求身份验证?

1 个答案:

答案 0 :(得分:1)

在我们的项目中,我们采用简单的方式。

在下面创建一些东西。

Base Auth类:

 public class TagAuth
    {
        /// <remarks/>
        public string agent { get; set; }

        /// <remarks/>
        public string sign { get; set; }

        /// <remarks/>
        public string ts { get; set; }

        /// <remarks/>
        public int seed { get; set; }
    }

所有请求的基类:

 public class BaseRequest
    {
        /// <remarks/>
        public TagAuth auth { get; set; }
    }

对模型中的所有请求使用BaseRequest类:

public class Cancel : BaseRequest
    {

        public long bid { get; set; }

    }

实施ServiceInterface:

公共类CancelService:ServiceBase {

protected override object Run(Cancel request)
{
    SecurityManager.CheckAuthorization(request.auth); 
    return CancelRouter.Route(request);
}

}

但是每个请求auth的原生支持对我们来说也很有意义。