2017-04-17 136 views
1

這裏是我的春天安全文件:春季安全攔截的URL不工作的單頁應用

<http auto-config="true" use-expressions="true"> 
     <intercept-url pattern="/login" access="isAnonymous()" /> 
     <intercept-url pattern="/stat" access="hasRole('ROLE_USER')" /> 
     <intercept-url pattern="/articles" access="hasRole('ROLE_USER')" /> 
     <intercept-url pattern="/**" access="hasRole('ROLE_ADMIN')" /> 
     <form-login login-page="/index.html#/login" 
      default-target-url="/index.html#/articles" 
      authentication-failure-url="/index.html#/login?error" 
      username-parameter="username" password-parameter="password" /> 
     <logout logout-success-url="/index.html#/login?logout" /> 
    </http> 

我在這裏提攔截的URL「/ **」只在最後。

下面是我的web.xml:

<servlet> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <servlet-class> 
      org.springframework.web.servlet.DispatcherServlet 
     </servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>classpath:dispatcher-config.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
    <!-- for spring security --> 
    <filter> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:spring-security.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

但還是我得到重定向問題,/登錄和其他URL模式沒有得到映射到處理程序!

這裏是app.js:

searchApp.config([ '$routeProvider', function($routeProvider) { 
    $routeProvider.when('/articles', { 
     templateUrl : 'partials/articles-list-accordian.html', 
     controller : 'ArticlesController' 
    }).when('/login', { 
     templateUrl : 'partials/login.html', 
     controller : 'LoginControllers' 
    }).when('/stat', { 
     templateUrl : 'partials/job-stat.html', 
     controller : 'JobStatController' 
    }).otherwise({ 
     /*redirectTo : '/welcome'*/ 
     redirectTo : '/articles' 
    }); 
} ]); 

請指引我在這裏,我是新手,是春天的安全性,從而可能會犯一些愚蠢的錯誤..

+0

你想攔截服務器端的客戶端路由嗎? –

+0

對不起延遲@RaghuVenmarathoor只有正常的服務器端路由。 –

回答

0

有用於應用春季偉大的教程AngularJS的安全性,這絕對不是微不足道的,你必須在你的應用程序做一些改變。

例如,建議使用httpBasic安全性,而不是採用formLogin身份驗證方法。您還需要使用HTTP頭將您的憑證發送到您的服務器,內容應該被編碼。

你可以閱讀如何做到這一點就在這裏:

https://spring.io/guides/tutorials/spring-security-and-angular-js/

我已經成功實現其與指定的技術堆棧,如果你需要進一步的幫助,讓我知道。

+0

哦,我現在明白了! yaa它不是微不足道的!並與我提到的URL一起,我發現[This_link](https://spring.io/blog/2015/01/12/the-login-page-angular-js-and-spring-security-part-ii)有用好。 我會回來更多的疑問(如果有的話)謝謝.. –