2013-12-20 1 views
0

Я положил ":spring-security-ui:1.0-RC1" в мой BuildConfig и скомпилировал его, после чего создал auth, register and securityInfo просмотров и контроллер с помощью команды spring ui. Я также поставил пользователя в свой db, чтобы проверить его.Spring Security UI - Невозможно открыть страницу регистрации/забыли пароль

Однако, когда я его протестировал, я просто попал на страницу входа в систему, после входа в систему я попал на страницу Grails. Однако кнопка Register New User and Forgotten Passoword не работает, я только перенаправляюсь на страницу login! Несмотря на то, что файл правильно отображается *.html.

Это как вид структура выглядит следующим образом:

enter image description here

Мой ÙRLMappings выглядеть так:

class UrlMappings { 

    static mappings = { 
     "/$controller/$action?/$id?(.${format})?"{ 
      constraints { 
       // apply constraints here 
      } 
     } 

     "/"(view:"/index") 
     "500"(view:'/error') 
    } 
} 

Я был бы признателен за Ваш ответ на мою проблему!

UPDATE Это мой auth.gsp:

<html> 

<head> 
<title><g:message code='spring.security.ui.login.title'/></title> 
<meta name='layout' content='register'/> 
</head> 

<body> 

<p/> 

<div class="login s2ui_center ui-corner-all" style='text-align:center;'> 
    <div class="login-inner"> 
    <form action='${postUrl}' method='POST' id="loginForm" name="loginForm" autocomplete='off'> 
    <div class="sign-in"> 

    <h1><g:message code='spring.security.ui.login.signin'/></h1> 

    <table> 
     <tr> 
      <td><label for="username"><g:message code='spring.security.ui.login.username'/></label></td> 
      <td><input name="j_username" id="username" size="20" /></td> 
     </tr> 
     <tr> 
      <td><label for="password"><g:message code='spring.security.ui.login.password'/></label></td> 
      <td><input type="password" name="j_password" id="password" size="20" /></td> 
     </tr> 
     <tr> 
      <td colspan='2'> 
       <input type="checkbox" class="checkbox" name="${rememberMeParameter}" id="remember_me" checked="checked" /> 
       <label for='remember_me'><g:message code='spring.security.ui.login.rememberme'/></label> | 
       <span class="forgot-link"> 
        <g:link controller='register' action='forgotPassword'><g:message code='spring.security.ui.login.forgotPassword'/></g:link> 
       </span> 
      </td> 
     </tr> 
     <tr> 
      <td colspan='2'> 
       <s2ui:linkButton elementId='register' controller='register' messageCode='spring.security.ui.login.register'/> 
       <s2ui:submitButton elementId='loginButton' form='loginForm' messageCode='spring.security.ui.login.login'/> 
      </td> 
     </tr> 
    </table> 

    </div> 
    </form> 
    </div> 
</div> 

<script> 
$(document).ready(function() { 
    $('#username').focus(); 
}); 

<s2ui:initCheckboxes/> 

</script> 

</body> 
</html> 
+1

Моя догадка бы вы установили регистр и забыли пароль страницы, как требующие аутентификации в аннотации или запроса карты –

+1

При попытке зарегистрировать вы получите сообщение об ошибке ? – Merlin

+0

@daguru Thx для вашего ответа! Нет, я не получаю stacktrace и никакой страницы ошибки вообще ... – mrquad

ответ

3

Возможно, вам необходимо добавить следующие два правила в ваш grails.plugin.springsecurity.controllerAnnotations.staticRules. Он находится в файле Config.groovy.

'/register/index':    ['permitAll'], 
'/register/forgotPassword':  ['permitAll'], 

В противном случае весенняя безопасность вернет ваш запрос обратно на экран входа/авторизации.

+0

может также понадобиться '/ register/register': ['allowAll'], '/ register/verifyRegistration': ['allowAll'], '/ register/resetPassword': ['allowAll'] для доступа к действиям – rattek

1

Что о контроллерах ?? Я не слышал упоминания о них, включая их в вашем файле конфигурации.
Определите свой обработчик успеха и определите контроллер для успешного входа в систему.

grails.plugin.springsecurity.successHandler.defaultTargetUrl = '/homePage' 

Тогда, если вы уже после входа в систему установите доступ в контроллерах с использованием аннотаций безопасности или с помощью InterceptMapURL.
Рассматривая вашу проблему, вы просто не настроили плагин безопасности, и все. Посмотрите на другую весеннюю безопасность для грааля в github, я думаю, это поможет вам.

+0

Thx для вашего ответа! Однако моя проблема заключается не в том, что я не могу войти в систему, моя проблема в том, что на моих отображаемых страницах html две ссылки на регистр и на страницу забытых паролей не работают! – mrquad

1

Просто добавьте анонимную роль в вашей RegisterController

import grails.plugin.springsecurity.annotation.Secured; 

@Secured(['ROLE_ANONYMOUS']) 
class RegisterController extends grails.plugin.springsecurity.ui.RegisterController { 
}