リクエストとレスポンスにそれぞれ2 つの基本クラスRequestBase
とがあります。ResponseBase
これらのクラスから派生したすべてのタイプの要求と応答。RequestBase
含まれるフィールドClientKey
とAccessToken
フィールド。また、私はAuthenticationService
サービスを持っています。
[ServiceContract]
public interface IAuthenticationService
{
[OperationContract]
public LoginResponse Login(LoginRequest request);
... other methods
}
サービスがあるとしOrderService
ます。
public class OrderService:IOrderService
{
public OrderResponse GetOrders(OrderRequest request)
{
...
}
}
と の各リクエストを検証し、ユーザーが認証されているかどうかも確認する必要ClientKey
がAccessToken
あります。私は次のことができます:
public OrderResponse GetOrders(OrderRequest request)
{
var response = new OrderResponse(request.RequestId);
// call helper method for validation
var validationResult = ValidateRequest.Validate(request, response, ValidateOptions.All)
...
}
しかし、私はすべてのメソッドにこのコード行を書きたくありません:
var validationResult = Validate.ValidRequest(request, response, ValidateOptions.All)
これを行う最善の方法は何ですか?
PS。これはValidate
方法です:
public static bool Validate(RequestBase request, ResponseBase response, ValidateOptions validate)
{
//Validate Client Key.
// Hardcoded here.
if ((Validate.ClientKey & validate) == Validate.ClientKey)
{
if (request.ClientKey != "ABC123")
{
response.Acknowledge = AcknowledgeType.Failure;
response.Message = "Unknown Client Key";
return false;
}
}
// Validate access token
if ((Validate.AccessToken & validate) == Validate.AccessToken)
{
if (request.AccessToken != _accessToken)
{
response.Acknowledge = AcknowledgeType.Failure;
response.Message = "Invalid or expired AccessToken. Call GetToken()";
return false;
}
}
// Validate user credentials
if ((Validate.UserCredentials & validate) == Validate.UserCredentials)
{
if (_userName == null)
{
response.Acknowledge = AcknowledgeType.Failure;
response.Message = "Please login and provide user credentials before accessing these methods.";
return false;
}
}
return true;
}
_accessToken
もう 1 つの質問:を_userName
サーバーに保存するのに最適な場所はどこですか?