セキュア コンテンツへのハイパーリンクを含む Excel レポートを出力する Web サイトがあります。リンクの1つは次のようになります...
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 などの外部プログラムから来るときは常に null であっても、リンクをコピーしてブラウザーに貼り付けると正常に動作するように見えることです。ヘルプ!
この方法でコンテンツに安全にアクセスするにはどうすればよいですか?