如何在多个请求中保持相同的会话,并保证其安全?

问题描述 投票:0回答:1

先决条件:使用Java可以确保最稳定的api测试

Step1。启动URL并获取登录票-下面的代码段获取登录票

RestAssured.baseURI = "https://ve4al10p:453";
RestAssured.useRelaxedHTTPSValidation();
Response res = 
   given().
        header("Content-Type","application/json").
    when().
        post("/i/login?action=lt").
    then().
        assertThat().statusCode(200).
        extract().response();
    res.prettyPrint();

输出:通知登录票

lt":"LT-12370-j4znjFQkGMXMjlT3uKJ"

步骤2.使用登录票证并使用用户名和密码执行登录。我提取了登录票证并传递到下一个请求(续片段)。

 CookieFilter cookieFilter = new CookieFilter();
 Response res1 = given(). 
    filter(cookieFilter).
    header("Content-Type","application/json").
    queryParam("lt",loginticket). 
    queryParam("username","user1"). 
    queryParam("password","pass1"). 
when().
    post("/i/login?service=https://ve4al10p:443/spa").  
then().
    assertThat().statusCode(200).
    extract().response();
res1.prettyPrint();

输出:请注意,它再次创建了一个新的登录票证,这意味着一个新的会话并无法给出预期的输出。

**"lt":"LT-12369-u6osMkesdg6RQu9JPoDARL4D"**

注意:我也注意到上述请求的会话,并且两者都不同。

预期输出:我要使用相同的登录票证并保持相同的会话。

rest web-services rest-assured web-api-testing
1个回答
0
投票

您可以从登录名获取SessionID / cookie,并将其作为SessionID传递给下一个请求作为标头,以维护单个会话。

例如:

String JsessionID = given().header(h1).body(payload).when().post(basepath).thenReturn().cookie("JSESSIONID");
given().headers(JsessionID).body(body).when().post();
© www.soinside.com 2019 - 2024. All rights reserved.