2017-01-30 19 views
0

簡単なWebアプリケーション用の単純なフィルタの作成。ユーザ認証のためのインターセプタフィルタの作成

  • ログイン
  • レジスタ
  • ホーム
  • 機能

ユーザーがログイン名 "admin" を使用してログインし、または/家庭用リソースにアクセスしようとしていない場合または/機能リソースは、ログインページに戻す必要があります。

しかし、私はリダイレクトループの問題に遭遇しているようです。このアプローチの問題点は何ですか?私はそれがそのような要件のための不正確な解決方法であると感じます。

public class LoginInterceptor extends HandlerInterceptorAdapter { 

    private static final Logger logger = Logger.getLogger("LoginInterceptor.class"); 

    // to be used checking session management for user. 
    @Override 
    public boolean preHandle(HttpServletRequest request,HttpServletResponse response, 
          Object handler) throws Exception { 

     logger.log(Level.INFO, "[][][][][] +++ prehandle"); 


     if (request.getAttribute("username") != null) { 
      if (request.getAttribute("username").equals("admin")) { 
       return true; 
      } else 
       response.sendRedirect("/sessionmanagement/login"); 
      return false; 
     } else if (request.getAttribute("username") == null & !request.getRequestURI().equals("/login")) { 
      // return false and redirect to login. 
      response.sendRedirect("/sessionmanagement/login"); 
      return false; 
     } 
     // return false and redirect to login. 
     response.sendRedirect("/sessionmanagement/register"); 
     return false; 
    } 
} 
+0

'LoginInterceptor'のためのあなたのURLパターンは何ですか? – destan

+0

リクエストURLに/ sessionmanagementが含まれているかどうかを確認するための条件も追加してください。ループを回避するのに役立ちます。 –

+0

/*はインターセプタのURLパターンです – Catresl

答えて

-1

あなたはあなただけのユーザ名と照合されることはありませんので、あなたが、あなたのユーザーが役割を持つことができる、ということを行うに春のセキュリティを使用することができ、スプリングを使用している場合は、ここでhttps://spring.io/guides/gs/securing-web/はあなたがオーバー行くことができますガイドですそれはかなり簡単ですので、あなたのメソッドには、ユーザの権限が何であるかを確認する注釈があります。ここ

あなたを助けることができる別の事:Spring Security with roles and permissions

http://www.journaldev.com/8748/spring-security-role-based-access-authorization-example

+0

情報ありがとうございます。私は春のセキュリティを使用せずにこれをやろうとしていると言及していたはずです。 – Catresl

+0

ちょうど1つの質問、なぜあなたはそれをしますか?何か理由はありますか? – Galeixo

+0

はい、私はその機能を理解して実装することができます。 – Catresl

関連する問題