Jasper reports 第二次登录后Visualize.js身份验证错误

Jasper reports 第二次登录后Visualize.js身份验证错误,jasper-reports,visualize,Jasper Reports,Visualize,我有一个网站,它有一个简单的登录/注销功能。每次登录时,我都调用authenicateUser()函数并注销destroySession()。当我尝试登录,然后注销,然后再次登录时,当我尝试呈现现有报告时,会出现以下错误: HTTP Status 401 - Full authentication is required to access this resource 函数authenicateUser()和destroySession()如下所示: function authenticate

我有一个网站,它有一个简单的登录/注销功能。每次登录时,我都调用
authenicateUser()
函数并注销
destroySession()
。当我尝试登录,然后注销,然后再次登录时,当我尝试呈现现有报告时,会出现以下错误:

HTTP Status 401 - Full authentication is required to access this resource
函数
authenicateUser()
destroySession()
如下所示:

function authenticateUser () {
    var myConfig = {
        auth : {
            name     : "superuser",
            password : "superuser"
        }
    };
    visualize.config( myConfig );
}

function destroySession() {
    visualize( function ( v ) {
        // Logout form JRS and finish the session.
        v.logout().done( function () {
        } );
    } )
}
我想指出的是,当我第一次登录我的帐户时,不会抛出此错误,并且会完美地呈现报告


为什么注销后再次登录会发生这种情况?

这似乎对我很有效。因此,我首先调用visualize.config(config),以便存储公共配置,在visualize调用之间共享它们,然后调用login方法,以便使用提供的auth对象执行身份验证。我的推荐人:


这个解决方案不在他们的文档中,但我把它们一块一块地放在一起,最终解决了这个问题。

文档中包含了这个问题的解决方案,尽管它不是很明确。请参见文档链接中的示例代码和示例链接

visualize.config({
  auth: {
      name: "superuser",
      password: "superuser"
  }
});

请注意:
实际上,当您登录时,您需要在某个适当的事件中注销。这取决于您的应用程序要求,例如,如果您正在现有web应用程序中嵌入报告,则将其链接到现有应用程序登录/lougut似乎更合适,因为链接到现有应用程序登录/注销并不一致,因为这不需要流来丢失会话。我使用本地存储来保存当前登录用户的信息。一旦用户被更改,我会通过本地存储看到这一点,然后首先注销,然后再登录。此外,如果用户同时打开几个带有visualize.js身份验证代码的选项卡,此解决方案还需要额外检查。可能会发生这样的情况:一个选项卡触发登录,同时另一个选项卡触发注销。
visualize.config({
  auth: {
      name: "superuser",
      password: "superuser"
  }
});