Grails + Spring Security Core Plugin + Facebook + Twitter

플로그인과 설치, 사용방법을 알 수 있다.
http://grails.org/plugin/spring-security-core
http://grails.org/plugin/spring-security-twitter
http://grails.org/plugin/spring-security-facebook

Spring Security Core Plugin 에 대해서는 좋은 튜토리얼이 있다.
http://blog.springsource.org/2010/08/11/simplified-spring-security-with-grails/

Spring Security Twitter Plugin 설치와 서용은 해당 플러그인 패이지를 그대로 따라하면 제대로 된다.
트위터를 통해서 로그인을 하면 ‘ROLE_USER’, ‘ROLE_TWITTER’ roles 를 얻는 걸 확인할 수 있다.
단, TwitterAuthTagLib 내용은 제대로 작동하게 아래 정도의 코드로 손을 좀 본다.
RequestToken requestToken = twitter.getOAuthRequestToken("http://www.namghiwook.com:8080/trip-planner/j_spring_twitter_security_check");
String authUrl = requestToken.getAuthorizationURL();

Spring Security Facebook Plugin 설치와 사용은 해당 플러그인 페이지를 그대로 따라하면 거의 되는데 … 단..
페이스북을 통해 로그인을 하면 “ROLE_USER” role 만 획득을 하고 정작 “ROLE_FACEBOOK” role 은 획득을 하지 않는다.
데이터베이스에도 SecRole 테이블에 “ROLE_FACEBOOK” 데이터도 만들어지지 않는다. 아니 만드는 코드가 플러그인에 원래 없다. 해서 BootStrap.groovy init 에서 다음과 같은 코드로 미리 만들어둔다.

def facebookRole = SecRole.findByAuthority('ROLE_FACEBOOK') ?: new SecRole(authority: 'ROLE_FACEBOOK').save(failOnError: true)

그럼.. “ROLE_FACEBOOK” role 획득하는 걸 확인할 수 있다.

페이스북을 통해서 로그인을 한 경우는 분기해서 로그아웃처리를 해주어여한다. 로그인관련 쿠키가 살아있기 때문이다.

taglib 내용에서는 아래와 같이 로그아웃을 한 후 페이지를 새로고침하거나 메인페이지로 이동한다.
FB.logout(function(){location.reload(true);});

이 글은 Grails 카테고리에 분류되었고 , , , , , 태그가 있습니다. 고유주소 북마크.

댓글 남기기