2016-03-28 3 views
1

私は単純なWebアプリケーションプロジェクトをmaven spring mvcで休止状態にしています。すべてのコントローラを設定して、すべて正常に動作しています。次に、ログインしていないユーザーには制限を設けます。また、ログアウトしたら投げ捨ててください。どうすればいいですか?Spring MVCでログインする前に特定のページに移動するようにユーザーを制限する方法はありますか?

+1

2つの単語:春のセキュリティ。ここでは[doc](http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/)です。ここには[チュートリアル](http://docs.spring.io/spring-セキュリティ/サイト/ docs/current/guides/html5 //) – Prashant

答えて

0

Servlet filterを使用できます。これは、Webアプリケーションを対象とするHTTP要求をインターセプトできるオブジェクトです。

サーブレットフィルタは、下の図に示すように、サーブレット、JSP、HTMLファイルまたはその他の静的コンテンツの両方の要求を傍受できます。

あなたはは、javax.servlet.Filterインタフェースを実装する必要がありサーブレットフィルタを作成するために。

public class SimpleServletFilter implements Filter { 

    public void init(FilterConfig filterConfig) throws ServletException { 
    } 

    public void doFilter(ServletRequest request, ServletResponse response, 
         FilterChain filterChain) 
    throws IOException, ServletException { 

    } 

    public void destroy() { 
    } 
} 

HTTPリクエストは、フィルタは、リクエストURIを検査リクエストパラメータとリクエストヘッダ、およびそれがブロックまたは転送したい場合はそれに基づいて決定することができたフィルタをインターセプトWebアプリケーションに到着ターゲットサーブレット、JSPなどへのリクエスト。

インターセプトを行うのはdoFilter()メソッドです。 doFilter()メソッドは文字列「blockTheRequest」に等しいかどうかを確認するために、リクエストパラメータ、MYPARAMをチェックする方法

public void doFilter(ServletRequest request, ServletResponse response, 
        FilterChain filterChain) 
throws IOException, ServletException { 

    String myParam = request.getParameter("myParam"); 

    if(!"blockTheRequest".equals(myParam)){ 
     filterChain.doFilter(request, response); 
    } 
} 

注意:ここではサンプル実装です。そうでない場合、要求はfilterChain.doFilter()メソッドを呼び出すことによって要求のターゲットに転送されます。このメソッドが呼び出されない場合、要求は転送されずにブロックされます。

リクエストパラメータmyParamが "blockTheRequest"に等しい場合、上のサーブレットフィルタはリクエストを無視します。別の応答をブラウザに書き戻すこともできます。サーブレットの内部と同じように、ServletResponseオブジェクトを使用してください。

Webアプリケーションのweb.xmlファイルでサーブレットフィルタを設定してから動作させる必要があります。

<filter> 
    <filter-name>myFilter</filter-name> 
    <filter-class>servlets.SimpleServletFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>myFilter</filter-name> 
    <url-pattern>*.simple</url-pattern> 
</filter-mapping> 

この構成では、URLが.simpleで終わるすべてのリクエストは、サーブレットフィルタによって傍受されます。その他のものはそのままです。

関連する問題