2016-07-05 12 views
1

私は非常にシンプルな春のセキュリティサンプルプロジェクトを実行しようとしていたが、私は404エラーを取得します。ここで問題を見つけるのを手伝ってください。春のセキュリティ問題 - 404エラー

project structure

コントローラー:

package mypack; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.servlet.ModelAndView; 

@Controller 
public class SecurityController { 

@RequestMapping(value = { "/", "/welcome**" }, method = RequestMethod.GET) 
public ModelAndView welcomePage() { 

    ModelAndView model = new ModelAndView(); 
    model.addObject("title", "Spring Security Hello World"); 
    model.addObject("message", "This is welcome page!"); 
    model.setViewName("hello"); 
    return model; 

} 

@RequestMapping(value = "/admin**", method = RequestMethod.GET) 
public ModelAndView adminPage() { 

    ModelAndView model = new ModelAndView(); 
    model.addObject("title", "Spring Security Hello World"); 
    model.addObject("message", "This is protected page!"); 
    model.setViewName("admin"); 

    return model; 

} 

} 

ばねservlet.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

<context:component-scan base-package="mypack" /> 

<bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix"> 
    <value>/WEB-INF/views/</value> 
    </property> 
    <property name="suffix"> 
    <value>.jsp</value> 
    </property> 
</bean> 

ばねのsecurity.xml

<beans:beans xmlns="http://www.springframework.org/schema/security" 
xmlns:beans="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/security 
http://www.springframework.org/schema/security/spring-security-3.2.xsd"> 

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

<authentication-manager> 
    <authentication-provider> 
    <user-service> 
    <user name="user" password="123456" authorities="ROLE_USER" /> 
    </user-service> 
    </authentication-provider> 
</authentication-manager> 

web.xmlの

<web-app id="WebApp_ID" version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

<display-name>Spring MVC Application</display-name> 

<!-- Spring MVC --> 
<servlet> 
    <servlet-name>spring</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>spring</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

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

    <!-- Loads Spring Security config file --> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/spring-security.xml 
    </param-value> 
</context-param> 

<!-- 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> 

admin.jspに

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<%@page session="true"%> 
<html> 
<body> 
<h1>Title : ${title}</h1> 
<h1>Message : ${message}</h1> 

<c:if test="${pageContext.request.userPrincipal.name != null}"> 
    <h2>Welcome : ${pageContext.request.userPrincipal.name} 
     | <a href="<c:url value="/j_spring_security_logout" />" > Logout</a></h2> 
</c:if> 

Hello.jspの

<%@page session="false"%> 
<html> 
<body> 
<h1>Title : ${title}</h1> 
<h1>Message : ${message}</h1> 

+0

コンポーネントスキャンは問題 – Gopinathan

+0

を修正するコントローラのアノテーションコンポーネントをスキャンします。申し訳ありませんが、コードスニペットで表示されませんでした。今編集しました。 – SRR

+0

私は私が春のセキュリティ設定を含めたら404エラーを取得し始めました。私がweb.xmlにある春のセキュリティ設定をコメントすると、プロジェクトは正常に動作します。私はログインページを含んでいないことに注意してください。私は春までに提供されるデフォルトのログインページを期待しています。 – SRR

答えて

0

file.Alsoがあなたのrequirmentごとに役割を変え、あなたの春のセキュリティ、XMLでコードの下に試してみてください。

<http auto-config="true" use-expressions="true"> 
     <intercept-url pattern="/signin" access="permitAll"></intercept-url> 
     <intercept-url pattern="/logout" access="permitAll"></intercept-url> 
     <intercept-url pattern="/accessdenied" access="permitAll"></intercept-url>   
     <intercept-url method="GET" pattern="/**" 
      access="hasRole('USER') 
      or hasRole('ADMIN')"></intercept-url> 

     <form-login login-page="/signin" default-target-url="/index" 
      authentication-failure-url="/accessdenied" always-use-default-target="true" 
      username-parameter="username" password-parameter="password"></form-login> 
     <logout logout-success-url="/logout"></logout> 
    </http> 
0

あなたはサーブレット・マッピングの「/」などのURLパターンにあなたのweb.xmlのサーブレットマッピングを構成してきたように。したがって、ディスパッチャサーブレットはindex.htmlに/ JSPという名前のファイルを探していることになります。あなたは

は、あなたがパスにフィルタを定義するために必要

<context:component-scan base-package="mypack" /> 
+0

<文脈:コンポーネント・スキャンベースパッケージ=「MYPACK」/>は、ばねservlet.xmlで存在します。申し訳ありませんが、コードスニペットで表示されませんでした。今編集しました。 – SRR

0

以下の行を追加するには、servlet.xmlにコンポーネントのスキャンを追加する必要があり、あなたのコントローラを設定するには

<intercept-url pattern="/" access="permitAll" /> 
<intercept-url pattern="/welcome" access="permitAll" /> 

ロールなし(匿名)を持つユーザーは、この場合には、「/」と「/歓迎**」にアクセスできるようにします。 <:コンポーネント・スキャンベースパッケージ=「MYPACK」/コンテキスト>バネservlet.xmlに存在する

関連する問題