0

データベースを使用してユーザーを認証できるように構成したアプリケーションがあります。

セットアップされたユーザー名とパスワードを使用してユーザーまたは管理者としてログインしようとすると、次のエラーが発生します。

  HTTP Status 404 - /project/login_error.jsp

そこで、ナビゲーション バーにリンクを配置して、URL が手動で機能しているかどうかを確認しようとしました。このリンクを使用すると、管理ページが表示されます。

   https://localhost:8443/project/admin

手動で入力すると他のページも表示されますが、他のページは表示されませんが、エラーページが表示されます。

一方、これを使用すると、ホームページはまったく表示されません。

 https://localhost:8443/project/home

エラーは発生しませんが、ログイン ページにリダイレクトされるだけです。

休止状態の HQL を除いて、スタック トレースにエラーは発生しません。

セキュリティ構成:

  <global-method-security pre-post-annotations="enabled" />
  <http pattern="/resources/css/**" security="none"/>
  <http pattern="/login.jsp*" security="none"/>

 <http auto-config="true" use-expressions="true" access-denied-page="/denied"   

  authentication-manager-ref="authManager">

    <intercept-url pattern="/**" requires-channel="https" />
    <intercept-url pattern="/index" access="permitAll" requires-

     channel='https'/>
    <intercept-url pattern="/login" access="permitAll" requires-

   channel='https'/>
    <intercept-url pattern='/home' access="hasRole('ROLE_USER')" requires-

   channel='https'/> 
    <intercept-url pattern='/admin' access="hasRole('ROLE_ADMIN')" requires-

   channel='https'/>

    <form-login login-page='/login' login-processing-url='/j_spring_security_check' 
  always-use-default-target="true" default-target-url="/home" authentication-failure-
  url="/login_error.jsp?error=true"/>   

    <logout invalidate-session="true" logout-success-url='/login' /> 
   </http>


<authentication-manager id="authManager">
    <authentication-provider user-service-ref="***UserDetailsService">
    <password-encoder hash="md5"/>
    </authentication-provider>
  </authentication-manager>

<beans:bean id="**UserDetailsService" class="com.**.**.**.**UserDetailsService">
</beans:bean>

コントローラ

  @Controller
  public class ApplicationController {

    @RequestMapping(value="/home", method = RequestMethod.GET)
        public String home(ModelMap model) {
    logger.info("Download and Upload Page {}.");

    Date date = new Date();
    DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);
    String formattedDate = dateFormat.format(date);
    model.addAttribute("serverTime", formattedDate );

    return "home";

}


      @RequestMapping(value="/login", method = RequestMethod.GET)
  public String login(ModelMap model) {
    logger.info("This is the login page {}.");

    return "login";

 }

JSPページ

   <c:url value="/j_spring_security_check" var="loginUrl"/>  
   <form action="${loginUrl}" method="post" >
<label for="j_username">Username</label>
<input id="j_username" name="j_username" type="text" />

<label for="j_password">Password</label>
<input id="j_password" name="j_password" type="password" />

   <input  type="submit"   
   value="Login"/>                              

    </form>

出力に表示される HQL

   Hibernate: select login0_.person_id as person1_1_, login0_1_.manager_id as      

   manager4_1_, login0_1_.email as email1_, login0_1_.name as name1_, login0_.enabled 

   as enabled3_, login0_.password as password3_, login0_.user_id as user5_3_, 

   login0_.username as username3_ from users login0_ inner join person login0_1_ on 

   login0_.person_id=login0_1_.person_id where login0_.username=?

この実装で何が欠けているのか本当にわかりません。そして、問題が何であるかについての指針をいただければ幸いです。

編集 - セキュリティ フィルターの追加

     <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>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>
4

0 に答える 0