【发布时间】:2017-02-24 08:28:26
【问题描述】:
我们创建了一个模仿 Spring Security - API Gate Pattern 教程 (https://spring.io/guides/tutorials/spring-security-and-angular-js/#_the_api_gateway_pattern_angular_js_and_spring_security_part_iv) 的应用程序。唯一的变化是我们使用的是 MySQL 数据库而不是 Redis。
使用 localhost:8080 作为根,我们有 localhost:8080/login(登录页面)、localhost:8080/ui(jQuery 客户端)和 localhost:8080/api(RESTful Web 服务、业务逻辑等)
我们发现会话处理和转发到各种实体的工作正常。这意味着会话按预期创建,转发按预期发生,等等。有一个例外。如果我登录,然后注销,然后直接转到 localhost:8080/ui,它会将我转发到登录页面。您登录,它会将您转发回 localhost:8080/ui,但会显示“ACCESS DENIED”!
跟踪数据库和客户端中的会话后,我发现数据库中存在两个会话。一个有权限,一个没有。客户保留一个没有!
还有其他人遇到过这个问题吗?有没有办法绕过这个?
这是我经历的步骤列表、数据库会话跟踪和客户端验证。
session_id principal_name 客户端 -------------------------------------------------- ---------- 1)去本地主机:8080 9229045c-27e0-410a-8711-45c56576d647 - X 2) 登录 2275db1c-fca4-4a2f-be73-e440599499d6 root X 3) 注销 cc917e68-b1c0-46a4-bbe3-6705ccf7a5fa - X 4) 转到 localhost:8080/ui --> 转发到 localhost:8080/login cc917e68-b1c0-46a4-bbe3-6705ccf7a5fa - X 5) 登录 -> 转发到 localhost:8080/ui -> 拒绝访问 90d7931d-b265-42e2-a225-286bcf7d159c - Xd2fae0ac-9cf9-4287-8e38-51f64b0ab28d root
【问题讨论】:
标签: java spring api spring-security spring-boot