2016-05-06 15 views
1

シングルページアプリケーションがあります。クライアント側はAngularJSを使用しますが、サーバー側はSpring MVC、REST、Springデータを使用します。アプリケーションのデプロイ時spring mvcは、ヘッダー、フッター、メニュー、メインコンテンツエリアとして、ページのさまざまなセクションに対応する複数の名前付きUIビューのJSタグ。AngularJSとSpringセキュリティを使用するSinglePageアプリケーションでAntMatcherが必要

DispatcherサーブレットのURLマッピングは/ ui *です。私の唯一のSpring MVCコントローラは、自分自身をhome.jspにレンダリングします。 home.jspには、以下に述べるように複数の名前付きangularJS ui-viewタグがあります。経路は、controller.jsのように定義されています。 web.xmlは次のようになります。 Springデータmongodbを使ったCRUD操作のための無数のREST APIがあります。

JavaアプリケーションでSpringセキュリティを使用してこのアプリケーションを保護したいと考えています。

私のSecurityConfiguration.javaファイルで以下のコードを試して、ログインページを認証せずにレンダリングできるようにしています。&他のページはブラウザからアクセスする前に認証する必要があります。ログインページはアプリケーションへの唯一のエントリポイントでなければなりません。しかし、このコードは機能しません。 お知らせください。

注:: - これはシングルページアプリケーションです。アプリケーションにはSpringMVCコントローラが1つしかありません& URL(http://localhost:8080/root/ui/login) にアクセスすると、angleJSアプリケーションで設定されたルートに基づいてurlが変更され、fragmentidentifierをURL(http://localhost:8080/root/ui/login#/login) として使用すると、アプリケーションはHome.jsp.PostアプリケーションのsingleJSPをレンダリングしますログインページがレンダリングされます。 他のハイパーリンクをクリックすると、フラグメント識別子のみが変更され、DBへ​​のREST呼び出しが行われ、ページのその特定のセクションのデータが移入されます。例:chDetailのハイパーリンクをクリックすると、URLは以下のように変更され(http://localhost:8080/root/ui/login#/chDetail)、そのセクションのデータがロードされます。 ログインページは安全ではなく、他のページはアクセスのために認証される必要があるように、適切なantMatcherを書く方法を教えてください。

セキュリティの設定コードは以下の通りです: - アプリの他の層の(ここではコードをお知らせください)

<code> 
http.csrf().disable().httpBasic() 
     .and() 
     .authorizeRequests() 
     .antMatchers("/ui/login#/login").permitAll() 
     .antMatchers("/ui/login#/chDetail").authenticated(); 
</code> 

コードスニペットは、参考のために以下の通りです。 Home.jspコードは以下の通りです。

<code> 
    <body ng-app="bpApp" ui-view> 
    <script type="text/ng-template" id="applicationPagelayout.html"> 
    <div class="grandContainer"> 
    <div ui-view="header"></div> 
    <div class="menuSecCT"> 
      <div ui-view="userStatus"></div> 
      <div ui-view="menu"></div> 
    </div>  
    <div class="mainContainer"> 
     <div ui-view="content"></div> 
    </div>  
    <p ui-view="footer"></p> 
</div> 
</script> 
</body> 
</code> 

ルーティングコントローラコードは次のとおりです。

<code> 
bpApp.config(['$stateProvider','$urlRouterProvider',function($stateProvider, $urlRouterProvider) { 
$urlRouterProvider.otherwise('/login'); 

$stateProvider.state('root', { 
    url: '', 
    abstract:true, 
    views: {  
     '': { 
      templateUrl: 'applicationPagelayout.html' 
     }, 

     '[email protected]': { 
      templateUrl:'resources/html/footer.html' 
     }, 
     '[email protected]': { 
      templateUrl:'resources/html/header.html' 
     }, 
     '[email protected]': { 
     templateUrl:'resources/html/userStatus.html' 
     }, 
     '[email protected]': { 
      templateUrl:'resources/html/menu.html' 
     }    
    } 

}).state('root.chDetail', { 
    url: "/chDetail", 
    views:{ 
      'content': { 
    templateUrl: "resources/html/chDetail.html", 
    controller: 'chDetailCtrl' 
      } 
    } 
}).state('login', { 
    url: "/login", 
    controller: 'loginCtrl', 
    templateUrl: "resources/html/login.html" 
}); 
}]); 

</code> 

その下にRESTおよびUIの ディスパッチャサーブレットのcxfservletのURLパターンを画定するようにweb.xmlがあります。プロジェクト内の

<servlet-mapping> 
    <servlet-name>CXFServlet</servlet-name> 
    <url-pattern>/ws/*</url-pattern> 
    </servlet-mapping> 

    <servlet-mapping> 
    <servlet-name>dispatcherservlet</servlet-name> 
    <url-pattern>/ui/*</url-pattern> 
    </servlet-mapping> 

のみspringmvcコントローラはRESTfulなAPIのApacheの-CXFを使用しているの

@Controller 
@RequestMapping("/login") 
public class ChController { 

@RequestMapping(method = RequestMethod.GET) 
public String getListingPage() { 
     return "HomePage"; 
} 
} 

さらにたくさんあります。 SpringデータMongo-dbはmongodbのCRUDに使用されます。

答えて

1

あなたの設定チェーンにこのようなものを追加する必要があります。

http.httpBasic() 
    .and() 
    .authorizeRequests() 
    .antMatchers("/root/ui/**").permitAll() 
    .anyRequest().authenticated(); 
+0

私はログインしています。localhost:8080/root/ui/loginまたはlocalhost:8080/root/ui/login /#loginというurlパターンのhtmlです。他のすべてのアプリケーションページは、次のURLのlocalhost:8080/root/ui/login#<>にあります。したがって、すべてのURLに適用できる/ root/ui **を指定した場合、したがって、その全てがアクセス可能であるか、または存在しない。 – user3504187

関連する問題