2017-12-13 12 views
1

私は春に簡単なログイン処理をしようとしていますが、そこに何らかのエラーがあります。ログインボタンをクリックすると、「HTTPステータス404 - 見つかりません。」と表示されます。 依存関係の3つのタイプのこのプロジェクトで使用されている春のmvcセキュリティでのログイン処理がうまくいきません

1.春・セキュリティ・ウェブ2.春-セキュリティ設定3.春・セキュリティ・コア

春セキュリティ構成。

春-のsecurity.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans" 
      xmlns="http://www.springframework.org/schema/security" 
      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.xsd 
      http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd 
"> 

    <http auto-config="true"> 
     <intercept-url pattern="/user/dairy**" access="hasRole('ROLE_USER')" /> 

     <form-login 
      login-page="/login" 
      default-target-url="/" 
      authentication-failure-url="/login?error" 
      username-parameter="username" 
      password-parameter="password" 
     /> 

     <logout logout-success-url="/login?logout" /> 

     <csrf/> 
    </http> 

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

</beans:beans> 

私はこのよう

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/applicationContext.xml, 
     /WEB-INF/spring-security.xml 
    </param-value> 
</context-param> 

コントローラ

@RequestMapping(value = "/login", method = RequestMethod.GET) 
public String account(ModelMap model, @RequestParam(value = "error", required = false) String error, 
     @RequestParam(value = "logout", required = false) String logout) { 
    model.put("account", new Dairy()); 

    if (error != null) { 
     model.addAttribute("error", "Invalid username and password!"); 
    } 

    return "user/accounts/login-signup"; 
} 

そして、私のログインにweb.xmlにこの構成の負荷を持っていますフォーム

<form class="form-inline" name="loginForm" method="post" action="${SITE_URL}/j_spring_security_check"> 
    <div class="form-group"> 
           <label for="email" style="color:white"><strong>Username:</strong></label> 
           <input type="text" name="username" class="form-control" placeholder="username"/> 
          </div> 
          <div class="form-group"> 
           <label for="pwd" style="color:white"><strong>Password:</strong></label> 
           <input type="password" name="password" class="form-control" placeholder="password"/> 
          </div> 
          <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /> 
          <button type="submit" class="btn btn-success">Login <span class="glyphicon glyphicon-log-in"></span></button> 
         </form> 

そして、これが私のプロジェクト構造である

enter image description here

答えて

2

として怒鳴るあなた<form-login>を変更します。

<form-login 
    login-processing-url="/j_spring_security_check" 
    default-target-url="/" 
    authentication-failure-url="/login?error" 
    username-parameter="username" 
    password-parameter="password" 
/> 
  • login-processing-urlは、ログインフォームがに掲載されていることをURLです。指定されていない場合は、デフォルトで/ loginになります。
  • login-pageログインページのURLです。ログインURLが指定されていない場合、Spring SecurityはGET/loginでログインURL を自動的に作成し、リクエストされたときにそのログインURLをレンダリングする対応するフィルタを作成します。
  • default-target-urlあなたは(あなたが期待するものに依存します)、この値を変更も必要になる場合がありますので、認証の成功後にリダイレクトされるURL

あなたの現在の構成で使用すると、円形のビューのリダイレクトエラーを取得し、レンダリングする必要がありますか/loginページが失敗するはずです。

アプリケーションが行 `ログイン処理-URL ="/j_spring_security_check`を追加した後(http://localhots:8080/上などをリスト)ルート1

+0

を使用している場合は、コンテキスト・パスを使用して${SITE_URL}を交換するか、それを削除しなければならない場合があります** 404-ページが見つかりません**エラーは解決されましたが、正しいユーザー名を入力するとエラーが表示され、エラーはこのようになります。** java.lang.IllegalArgumentException:id "null" **のためにマップされたPasswordEncoderはありません。 – Hoax

+0

どのバージョンのSpringセキュリティとSpringを使用していますか?私にとってはうまくいきます。 –

+0

以前、私はバージョン5のスプリングセキュリティを使用していました。ありがとう@Peter Jurkovic y私たちの提案 – Hoax

関連する問題