一 登陆saiku时发生了什么
大致流程 saiku 默认有admin和两个开发人员的身份
登陆saiku时,后台用户认证成功后创建了用户信息session
并在session中存储了随机生成的一个sessionId
这是每个用户对应唯一的一个身份id 然后访问
/saiku/rest/saiku/session - GET 接口
获取存储的sessionId 如果获取到了sessionId 就开始构建saiku首页了
/saiku/rest/saiku/用户账号/discover
详细流程 访问 localhost:8080 1. 访问 /saiku/rest/saiku/info
2. 访问 /saiku/rest/saiku/ui-settings
3. 访问 /saiku/rest/saiku/session [GET] 这时还没登陆,没有sessionId,执行new LoginForm()操作创建登陆窗口
点击[login]按钮
4. 访问 /saiku/rest/saiku/session [POST] 附带用户名密码 进行用户身份验证 [sessionResource-login]
验证成功后 将用户信息写入session 特别是sessionId
5. 执行Response.ok().build()返回请求页面[这时候是 /saiku/rest/saiku/session [GET]]
6. 此时通过 访问 /saiku/rest/saiku/session [GET]就能获取到写入的session 获取到了用户信息
7. 验证通过后 就访问 /saiku/rest/saiku/用户名/discover 接口去获取用户的cube等一系列信息了 注意:如果通过getSession一直获取不到用户的sessionId信息,那么始终会创建LoginForm登陆窗口
二 选择和切换cube时发生了什么
用浏览器跟踪,发现在选择cube后,saiku服务器会随机生成一个id字符串,用于交互时,保证唯一性。 如果再选另一个cube,重新提交了一个申请,saiku会自动先删除原先的id字符串,然后重新生成一个id字符串,作为一个新查询。 http://IP:PORT/saiku/rest/saiku/登陆账号/query/4FF7D01E-8A6B-5EB4-991B-C0CE680A4BCA/result/flat 其中:4FF7D01E-8A6B-5EB4-991B-C0CE680A4BCA 就是交互ID