我有一个网站,可以输出带有超链接的 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)出现时始终为空,即使我在单击链接之前已登录,但是,如果我将链接复制并粘贴到浏览器中,它似乎工作正常。帮助!
我怎样才能以这种方式安全地访问内容?