【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.