4

2.2.2에서 버그를 피하기 위해 grails 2.2.2에서 grails 2.3.4로 마이그레이션합니다. 봄 보안 속성 메시지의 텍스트 값은 표시되지 않지만 모든 종류의 문제를 다루고 있습니다. 전에는 효과가 있었지만 지금은 그렇지 않습니다.Grails Spring Security 2.0에서 로그인/페이지를 만드는 방법은 무엇입니까?

문제

내가 Grails의 응용 프로그램을 실행하면, 초기 기본 페이지가 표준 기능입니다 의 index.gsp하지만 봄 보안 핵심 봄 보안 LDAP 및 스프링 securiy의 UI 플러그인 I 설치 및 구성 후 /login/auth 내 기본 페이지를 만들고 싶습니다. 이전 릴리스에서

, 나는 단순히, 주석 교체하거나이 하나

"/"(view:"/login/auth") 

내 구성이 줄을

"/"(view:"/index") 

을 삭제하여 UrlMappings.groovy 설정 파일을 통해 수행했다 .groovy가 설정되어 인증이 성공하면 집으로 이동합니다.

grails.plugin.springsecurity.userLookup.userDomainClassName = 'security.Person' 
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'security.PersonAuthority' 
grails.plugin.springsecurity.authority.className = 'security.Authority' 
grails.plugin.springsecurity.requestMap.className = 'security.Requestmap' 
grails.plugin.springsecurity.securityConfigType = 'Requestmap' 
grails.plugin.springsecurity.successHandler.defaultTargetUrl = '/home/' 

와 부트 스트랩 내 Requestmap 항목 (그들은이 문제에 대한 어떤 중요한 경우 다음과 같습니다) :

for (String url in [ 
     '/', '/index', '/index.gsp', '/**/favicon.ico', 
     '/**/js/**', '/**/css/**', '/**/images/**', 
     '/login', '/login.*', '/login/*', 
     '/logout', '/logout.*', '/logout/*']) { 
    new Requestmap(url: url, configAttribute: 'permitAll').save() 
    } 

    new Requestmap(url: '/home/*', configAttribute: 'IS_AUTHENTICATED_FULLY').save() 

내가 할 때 로그인/인증가 온다 ... 유레카 것을집니다 응용 프로그램이 시작 되 자마자 올바른 인증 자격 증명을 입력하면 인증되지 않은 것처럼 '약간의 깜박임'이 나타나며 다시 표시됩니다.

그러나, 나는이 라인

"/"(view:"/login/auth") 

을 삭제하고

"/"(view:"/index") 

다시이 1 점을 추가하는 듯 내가 수동으로 로그인/인증에 응용 프로그램 I를 다시 시작할 때 다음 올바른을 넣으면 자격 증명을 입력하면 올바르게 홈 페이지로 이동합니다.

질문

  1. 내가 로그인/인증 첫 번째 페이지를 만들 것 어디서나 설정 어떤 설정을 그리워 (뿐만 아니라 저를 인증 할 수 있도록) 했습니까?

  2. 별도의 게시 된 질문이 있어야할지 모르겠지만 디자인에 의해 플러그인의 일부인 로그인 페이지가 생성되고 코드의 일부가 생성되고 내 의지에 따라 스타일을 지정할 수 있습니다. 보기를 사용자 정의하려면 LoginControllerAuth.gsp을 복사하여 붙여야 하나 더 좋은 방법이 있습니까?

미리 감사드립니다.

답변

3

스프링 보안의 인증 메커니즘은 로그인 페이지가 표시 될 때 참조 URL을 추적하여 작동합니다. 그런 다음 로그인 성공시이 페이지로 리디렉션됩니다. 로그인 페이지가 첫 페이지가되도록하려면 사람들이 루트보기에 인증을 요구하도록하십시오. 나는 대부분의 응용 프로그램이 인증을 요구한다고 가정합니다. 이 경우 로그인 페이지를 루트보기로 만들 필요가 없습니다. /home/* 아래의 모든 것이 잠긴 경우 스프링 보안은이를 감지하고 보안 페이지 중 하나가 요청되면 즉시 로그인 페이지로 리디렉션합니다.

짧게 길어서, 필요 이상으로 힘들게 만듭니다.

두 번째 질문에 대해서는 앱에서 사용자 정의 버전을 만들어서 사용자 정의해야한다고 생각합니다.

+0

하여 기본 로그인 URL /login/auth을 시도 할 수 있습니다 전구를 들고. 보기와 내 자신의 auth.gsp에서 로그인 폴더를 만듦으로써 로그인 화면을 사용자 정의 할 수있었습니다. LoginController를 내 코드베이스에 복사 할 필요가 없습니다. – Viriato

+0

"봄 보안은 추천 URL을 추적하여 작동합니다"라는 메시지가 내 응용 프로그램의 문제점을 파악하는 데 도움이되었습니다. 로그인 페이지는 사용자가 링크를 통해 로그인 페이지에 가기 전에 표시된 기본 페이지의 Javascript에 의해 호출 된 URL로 계속 리디렉션되었습니다. 이 URL은 스프링 보안에 의해 보호 되었기 때문에 스크립트가 액세스 할 수 없다는 것을 알았습니다. 실패한 시도에서 Spring Security는 로그인 후 URL을 기억할 것입니다. 당신의 힌트로, 나는 그 URL을 로그인없이 액세스 할 수있는 페이지 목록에 추가했습니다. 잘 됐어. – HumanInDisguise

1

이봐, 난 당신의 문제에 대한 꽤 잘 모르겠어요하지만 당신은 "봄 보안이 추천 URL을 추적하여 작동합니다"라고 할 때, 당신은 빛을

grails.plugin.springsecurity.auth.loginFormUrl = '/login/auth' 
관련 문제