2012-01-18 9 views
1

うまく動作する単純なSpringMVCログインシステムを構築しましたが、有効なログインでの使用のみが表示されるようにページを制限します。私はJSPを使用していた場合、私は...SpringMVCはセッションを使ってページを表示するためにログインする必要があります

if (login.equals("admin") && password.equals("guess")) { 
     // Valid login 
     session.setAttribute("authorized", "yes"); 
} else { 
     // Invalid login 
     session.setAttribute("authorized", "no"); 
} 

をチェックします。しかし、サーブレットのセットはセッションがアクセスすることができる場合、私は、グローバルSpringMVCで自分のアプリケーションでどのように設定するのですか?セッションを設定することはできますが、SpringMVCではセッションの処理をコントローラやservlet-context.xml(またはweb.xml)で行う必要があります。したがって、「ユーザーがこのページを表示している場合は、そうでなければホームページ。

私のlogin.jspは非常にシンプルな...

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ page session="true" %> 
<html> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<head> 
    <title>Login</title> 
</head> 
<body> 
<h1> 
    Hello please login to this application 
</h1> 
<script> 

     function login(){ 
      var username = $("#username").val(); 
      var password = $("#password").val(); 

      $.post('login', { username : username , password : password }, function(data) { 
       $('#results').html(data).hide().slideDown('slow'); 
      }); 
     } 

</script> 
Username : <input id="username" type="text" /> 
Password : <input id="password" type="password" /> 
<input name="send" type="submit" value="Click me" onclick="login()" /> 
<form name="next" action="auth/details" method="get"> 
    <input name="send" type="submit" value="Go Through"/> 
</form> 
<div id="results" /> 
</body> 
</html> 

は私が唯一のユーザーがログインした場合のauth /詳細のコントローラが詳細を返すようにしたいされ、これに対する最善のアプローチは何ですか?クッキー/セッションなど?

おかげで、

デビッド

答えて

2

は、車輪の再発明のように見えます。 Spring Securityはすでにあなたのケースを処理しており、web.xml(サーブレットフィルタを定義する)のXML行はほとんどなく、選択されたURLへのアクセスを制限し、ログイン/ログアウト画面を提供し、ユーザーストレージとHTTPセッション管理を処理します。デフォルトの設定(auto)が開始するのに十分です、非常に複雑であることが知られ

ものの:

<http auto-config='true'> 
    <intercept-url pattern="/**" access="ROLE_USER" /> 
</http> 

tutorialを参照してください。またApache Shiroは、今日多くの牽引力を得るようです。

何らかの理由でSpring Securityをスタックに導入したくない場合、Spring MVC interceptorsは、クロスカッティングセキュリティロジックを実装するのに適しています。元の要求と応答にアクセスできるため、URLを検出してHTTPセッションを確認できます。

0

Spring Security JSP Taglibを見てみましょう。設定が完了すると、

<sec:authorize access="hasRole('user')"> 
    Only logged in users will see this. 
</sec:authorize> 
関連する問題