0

我有一个网站,可以输出带有超链接的 Excel 报告,返回到安全内容。其中一个链接看起来像这样......

http://www.[site].com/externalLinkDigester?externalSession=[SHA Encrypted Text]

查询字符串参数 (externalSession) 是唯一的字母数字字符串,仅在 24 小时内有效,并且只能由创建报告的用户访问。我的控制器看起来像这样......

class ExternalLinkDigester{

   def springSecurityService;

    def index = {
        def currentUser = springSecurityService?.currentUser

        if (!currentUser){
            redirect(controller:'login')
        }

        def request = ExternalSession.findByName(params.externalSession);

        if (request.isExpired(){
            //show expired content page
        }


        if (sameUser(currentUser, request.user){
            //show content
        }else{
            redirect(controller:'login')
        }



    }
}

问题是,无论从springSecurityService.currentUser外部程序(如 Excel)出现时始终为空,即使我在单击链接之前已登录,但是,如果我将链接复制并粘贴到浏览器中,它似乎工作正常。帮助!

我怎样才能以这种方式安全地访问内容?

4

1 回答 1

2

Excel 是否有可能打开与您登录时使用的浏览器不同的浏览器(例如,您使用 Firefox 登录,当单击 excel 中的链接时,默认为在 Internet Explorer 中打开链接)。新浏览器将没有经过身份验证的会话的会话 cookie,因此“currentUser”将显示为空。

于 2012-06-11T21:31:09.440 回答