私はまたこれに対する解決策を探していて、以下を思いついていました。物事のユーザーインターフェイスの側面(ログインページへのリダイレクト)は完全には処理されませんが、権限のないアクセスからデータレイヤーが保護されます。
public class MyRequestFactoryServlet extends RequestFactoryServlet
{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException
{
if (! userIsLoggedIn(req))
{
throw new ServletException("not logged in");
}
else
{
super.doPost(req, res);
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
if (! userIsLoggedIn(req))
{
throw new ServletException("not logged in");
}
else
{
super.doGet(req, res);
}
}
protected boolean userIsLoggedIn(HttpServletRequest req)
{
// insert your custom code here for checking session for valid login token
User user = (User) req.getSession().getAttribute("LOGGED_IN_USER");
return user != null && user.isEnabled();
}
次に、RequestFactoryServletではなくweb.xmlでMyRequestFactoryServletを使用します。
ログインのUIの側面を処理するために、私のアプリケーションのランディングページでGWT RPCを使用して有効なログインを確認します。ユーザーがログインしていない場合は、ユーザー名/パスワードの入力を求められます。上記のコードは、バックエンドを、他のURLに直接ジャンプしたり、手動でサーブレットにデータを投稿してログインページを迂回しようとするユーザーから保護します。
お返事ありがとうございます。私はこれがAndroid用に同じRFを使用するときにどのように実装されるのだろうか?私はアンドロイドの下で同じrequestfactoriesとオブジェクトを使用し、私はセッションの属性を設定する方法についてはわかりません。あなたはこれに対処しましたか? – Patrick