ACEGI 플러그인을 사용하여 Grails 앱을 보안하고 내 컨트롤러 메서드에서 주석을 사용하여 로그인하라는 메시지를 표시합니다.로그인 한 사용자의 ID를 acegi를 사용하여 grails의 선택된 컨트롤러에 전달하는 방법
내 앱에는 login/auth
페이지로 리디렉션되는 로그인 링크가있는 정적 HTML 프론트 페이지가 있습니다. 로그인이 성공하면 person/mainpage
이라는 인증 된 사용자에 대한 내 자신의 사용자 정의 페이지를로드하려고합니다. 내 LoginController
에서
는
는def index = {
if (isLoggedIn()) {
redirect uri: '/'
}
else {
redirect action: auth, params: params
}
}
/**
* Show the login page.
*/
def auth = {
nocache response
if (isLoggedIn()) {
redirect uri: '/'
return
}
String view
String postUrl
def config = authenticateService.securityConfig.security
if (config.useOpenId) {
view = 'openIdAuth'
postUrl = "${request.contextPath}/login/openIdAuthenticate"
}
else if (config.useFacebook) {
view = 'facebookAuth'
postUrl = "${request.contextPath}${config.facebook.filterProcessesUrl}"
}
else {
view = 'auth'
postUrl = "${request.contextPath}${config.filterProcessesUrl}"
}
render view: view, model: [postUrl: postUrl]
}
이 내가 원하는 것이 아니다 응용 프로그램 (/)의 메인 페이지로 돌아 성공적인 로그인을 리디렉션 ... 다음 코드가있다. 내가 이런 securityconfig.groovy
내 인증을 위해 기본 대상을 정의 할 수 있음을 발견하면서 약간에 대한 인터넷 검색을 ..
defaultTargetUrl = "/person/mainpage"
내 질문은 내 PersonController
내 mainpage
행동에 착륙 할 때 로그인하는 사용자 식별하는 방법입니다 ? 처음에는
나는
def index = {
if (isLoggedIn()) {
redirect controller: person, action: mainpage, params: params
}
else {
redirect action: auth, params: params
}
}
... 이런 내 페이지로 리디렉션 인 LoginController 내 index 액션을 변경하지만의 ID는 I가 내가 생각하는합니다 (params
에 나타나지 않는 사람에 로그인 URL 매개 변수로 사용자 행 ID를 정의하여 페이지를 끌어 올 수있는 것이 미친 것처럼 보이기 때문에 행복합니다.)
그럼 어떻게해야할까요? 기본적으로 내 person/mainpage
작업으로 현재 로그인 한 사용자를 해결할 수 있습니다.
나는 거의 도착했다. 다른 클래스 인 것으로 보이는 authenticateService.principal()을 사용하고있었습니다. authenticateService 인터페이스에 대한 설명서를 찾고 있는데, 그쪽으로 나를 가리킬 수 있습니까? – Simon
관심사로서, 이것은 이런 종류의 문제에 대해 받아 들여진 접근 방식입니다. 약간의 해킹과 사용자의 컨텍스트가 수동으로 인증 서비스로 돌아 가지 않고도 사용할 수 있어야한다고 느낍니다. – Simon
Principal을 SecurityContext에서 사용할 수 있으며 사용자 도메인 인스턴스가 이에 첨부됩니다. 직접 갈 수도 있지만 AuthenticateService는 구현 세부 정보를 숨 깁니다. 플러그인은 또한 'getAuthUserDomain()'메소드를 동일한 작업을 수행하는 컨트롤러에 삽입합니다. –