报这个错误 ? pay attention to any unsaved data

因为做了单点登录,就报这个错误 ? pay attention to any unsaved data !

用的什么单点登录技术?

我使用的是idp

我只要打开服务提供者,身份验证就报这个错误!

使用了 nginx 之类的转发吗?另外,请提供一下 idp 和 sp 的相关 log。

用的是tomcat!

好的!能否看看相关 log!

app.log.zip (142.3 KB) localhost.2019-09-25.log.zip (6.0 KB)

身份认证和服务层的!

注意 app.log 中的这几行:

2019-09-25 20:34:29.744 DEBUG [http-nio-8080-exec-12] com.haulmont.addon.idp.idp.sys.IdpServlet - GET "/app/idp/?sp=http%3A%2F%2Flocalhost%3A8080%2Fapp", parameters={masked}
2019-09-25 20:34:29.957 INFO  [http-nio-8080-exec-12/app-core/server] com.haulmont.cuba.security.auth.AuthenticationManagerBean - Logged in: 0867b489-5e80-1e24-ed7b-72716bda06ae [admin]
2019-09-25 20:34:30.272 WARN  [http-nio-8080-exec-12/app/admin] com.haulmont.addon.idp.idp.controllers.IdpController - Incorrect serviceProviderUrl http://localhost:8080/app passed, will be used default
2019-09-25 20:34:30.272 ERROR [http-nio-8080-exec-12/app/admin] com.haulmont.addon.idp.idp.controllers.IdpController - IDP property cuba.idp.serviceProviderUrls is not set
2019-09-25 20:34:30.278 DEBUG [http-nio-8080-exec-12] com.haulmont.addon.idp.idp.sys.IdpServlet - Completed 500 INTERNAL_SERVER_ERROR
2019-09-25 20:34:33.764 DEBUG [http-nio-8080-exec-18] com.haulmont.addon.idp.idp.sys.IdpServlet - GET "/app/idp/?sp=http%3A%2F%2Flocalhost%3A8080%2Fapp", parameters={masked}
2019-09-25 20:34:33.789 WARN  [http-nio-8080-exec-18/app/admin] com.haulmont.addon.idp.idp.controllers.IdpController - Incorrect serviceProviderUrl http://localhost:8080/app passed, will be used default
2019-09-25 20:34:33.794 ERROR [http-nio-8080-exec-18/app/admin] com.haulmont.addon.idp.idp.controllers.IdpController - IDP property cuba.idp.serviceProviderUrls is not set
2019-09-25 20:34:33.794 DEBUG [http-nio-8080-exec-18] com.haulmont.addon.idp.idp.sys.IdpServlet - Completed 500 INTERNAL_SERVER_ERROR
2019-09-25 20:34:34.485 DEBUG [http-nio-8080-exec-8] com.haulmont.addon.idp.idp.sys.IdpServlet - GET "/app/idp/?sp=http%3A%2F%2Flocalhost%3A8080%2Fapp", parameters={masked}
2019-09-25 20:34:34.502 WARN  [http-nio-8080-exec-8/app/admin] com.haulmont.addon.idp.idp.controllers.IdpController - Incorrect serviceProviderUrl http://localhost:8080/app passed, will be used default
2019-09-25 20:34:34.506 ERROR [http-nio-8080-exec-8/app/admin] com.haulmont.addon.idp.idp.controllers.IdpController - IDP property cuba.idp.serviceProviderUrls is not set
2019-09-25 20:34:34.506 DEBUG [http-nio-8080-exec-8] com.haulmont.addon.idp.idp.sys.IdpServlet - Completed 500 INTERNAL_SERVER_ERROR

这里说 serviceProviderUrls 配置有问题。
按照文档的说明,类似下面的配置,需要注意SP地址最后那个/,不能少了。

cuba.idp.serviceProviderUrls = http://fish:8081/app/,http://chips:8082/app/

cuba.idp.serviceProviderUrls = http://localhost:8080/app/,http://localhost:8000/app/,http://localhost:9000/app/ 就是这样配置的!

打开 SP 的时候,在浏览器地址栏输入地址时也要加上 /, 否则 /app/idp/?sp=http%3A%2F%2Flocalhost%3A8080%2Fapp 这串地址最后跟的 sp 地址会与 serviceProviderUrls 里面的地址匹配不上。

http://localhost:8000/app/#main/0/portal/ 这样在地址栏输入还是不行!!!!

不用带后面那些,直接这样试试?

试了还是有问题,我的8080端口是身份认证与服务,8000和9000端口是提供服务的,通过8080端口进行登录,然后打开8000或者9000任意一个,8080端口就是上面的错误!

cuba.idp.serviceProviderUrlMasks 这个掩码的配置案例有没有,我猜测是这个问题!

cuba.idp.serviceProviderUrls = http://localhost:8080/app/,http://localhost:8000/app/,http://localhost:9000/app/ 这个配置能不能做成动态的,二不是死的!

这个配置可以用 mask 的配置作为补充,mask 的配置示例:

cuba.idp.serviceProviderUrlMasks =http://192.168.0.108:8081/app/.*,http://localhost:8081/app/.*

另外,你按照上面说的步骤做的时候,监控一下 8080 端口 sp 的 log,看看是否有错误日志。

依然报错,但是没有错误日志!!!