최근 OpenID 지원을 추가 한 Spring Roo 빌드 사이트로 해결하려고하는 고유 한 문제가 있습니다. 나는 posted something on the Spring Forums, 그리고 내 능력의 문제를 설명하려고했지만 지금까지 어떤 도움도받지 못했습니다.모든 @Controller에 대한 사용자 정보가있는 모델 자동 채우기
내가 설명 할 수있는대로 여기에 개요가 나와 있습니다. 제가 작업하고있는 사이트는 Spring Security와 JDBCUserDetailsService를 사용하여 간단한 폼 로그인을 가졌습니다. 또한 사용자가 지원되는 OpenID를 통해 로그인 할 수 있기를 원했기 때문에 Spring Security examples for implementing OpenID w/ auto-registration 사이트 코드를 수정하여 간단한 양식과 OpenID 로그인을 모두 허용했습니다. UserDetails는 여전히 데이터베이스에서오고 있으며, 유일한 차이점은 OpenID 사용자 ID가 OpenID 공급자로부터 다시 전달 된 전체 인증 URL 문자열이라는 것입니다.
내가 겪고있는 문제는 헤더 코드에 있습니다. 그렇지 않으면를 인쇄,
<c:choose>
<c:when test="${pageContext['request'].userPrincipal == null}">
<span>
<form method="post" action="${login}" name="login_form" id="login_form">
<input name="j_username" type="text" id="j_username" />
<input name="j_password" type="password" id="j_password" />
<input name="submit" type="submit" id="proceed" />
</form>
</span>
<span>or <a href="${registration_form}">Register</a></span>
</c:when>
<c:otherwise>
<span>Hello, <a href="${user_profile_base}${pageContext['request'].userPrincipal.name}"><img src="${user_img_url}" width='10' height='10' />${pageContext['request'].userPrincipal.name}</a></span> | <a href="${logout}">Logout</a>
</c:otherwise>
</c:choose>
기본적으로, 사용자 교장 (즉,이 사용자가 로그인하지 않은), 다음의 로그인을 표시 페이지 문맥에없는 경우 : 우리는 다음을했던 몇 가지 간단한 JSPX 코드를했다 사용자의 사용자 이름으로 멋진 "환영 ...". 이 코드는 컨트롤러 코드에 특별한 기능을 요구하지 않았습니다. 사용자가 로그인했는지 여부.
이제 OpenID 사용자에게 문제가 있습니다. 사용자 이름은 더 이상 사용자 정의 문자열이 아닙니다. 그 대신 사용자가 읽을 수있는 ID 이름을 포함하거나 포함하지 않을 수있는 긴 URL 문자열 (Google은 예를 들어 GUID처럼 보이는 성운 문자열을 가지고 있습니다).
DB에 저장된 사용자 개체에 "별칭"필드 (UserDetails, fwiw의 인스턴스가 될 수 있음)를 추가하고 사용자가 직접 설정할 수 있도록하는 방법을 생각해 보았습니다. JSPX 측에서 그 데이터를 "일반적인"방식으로 얻으려면. 비슷한 일을하려고하는 누군가가 있음을 알고 있지만, 어떻게 접근했는지를 알 수는 없습니다.