0

セキュア コンテンツへのハイパーリンクを含む 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 であっても、リンクをコピーしてブラウザーに貼り付けると正常に動作するように見えることです。ヘルプ!

この方法でコンテンツに安全にアクセスするにはどうすればよいですか?

4

1 に答える 1

2

Excel がログインに使用したブラウザとは異なるブラウザを開いている可能性はありますか (たとえば、Firefox でログインし、Excel 内のリンクをクリックすると、デフォルトで Internet Explorer 内でリンクが開きます)。新しいブラウザには、認証されたセッションのセッション Cookie がないため、「currentUser」は null として表示されます。

于 2012-06-11T21:31:09.440 に答える