【Salesforce】No Access Allowed To This Class

【Salesforce】No Access Allowed To This Class

Visualforceからconnection.jsを使用してWebserviceを呼び出す処理がありました。

その中で、管理者では動作するのにポータルユーザでは動作しない処理がありました。

調べてみると、Javascriptでエラーが発生していました。

No Access Allowed To This Class

このクラスにアクセスしないでねって感じでしょうか。

処理としては以下のイメージです。

<script src="/soap/ajax/36.0/connection.js" type="text/javascript"></script>
<script src="/soap/ajax/36.0/apex.js" type="text/javascript"></script>
<script>sforce.connection.sessionId='{!GETSESSIONID()}';</script>

<script type='text/javascript'>

    function callWebservice(name){
    
        var result;

        // Webserviceの呼び出し
        // ここでエラーが発生する
        result = sforce.apex.execute('GetFileController','getFile',{Name : name});
    }

</script>

原因はJavascriptではなく、プロファイルの設定にありました。

ポータルユーザが使用するプロファイルの「有効な Apex クラス」に、呼び出し先のクラスが設定されていませんでした。

「有効な Visualforce ページ」に含まれるコントローラと同じクラスだったため、追加を忘れたのでしょうか。

「有効な Apex クラス」にWebserviceクラスで呼び出す「GetFileController」クラスを追加することで解決できました。

リリースの際には注意が必要ですね。

作った人が見ればもっと早く修正される気がするのですが、何故か私に回ってきました。。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です