2011-04-28 2 views
4

Grails에 새로운 Shiro 보안을 사용합니다. 로그인 페이지가있는 작은 사이트를 만들었고 로그인이 성공하면 다른 로그인 페이지로 리디렉션됩니다.내 프로젝트에서 Grails의 Shiro 보안을 구현하는 방법

이제 Shiro Security를 ​​구현하고 싶습니다. Grails Project에서 Shiro의 플러그인과 빠른 시작 앱을 실행했습니다.

내가 원하는 것은 빠른 시작 파일과 코드를 사용하여 내 자신의 페이지에 보안을 구현할 수있는 방법입니다. 안내해주십시오. 조금. 어떤 파일을 빠른 시작에서 사용해야하며 어떤 변화를해야합니까? ?

플러그인 {:

grails create-app ShiroDemo 

지금 BuildConfig.groovy의 플러그인 섹션에 추가 shiroby를 설치 : 몇 가지 긍정적 인 반응 : 새로운 앱

답변

9

하자의 첫 시작을 기다리고

compile ": shiro : 1.1.4"

인증 컨트롤러와 와일드 카드가 필요합니다. ALM :

grails create-auth-controller 
grails create-wildcard-realm 

지금의이 bootstrap.groovy에 필요한 역할과 권한을 가진 더미 사용자를 만들 수 :
import org.apache.shiro.crypto.hash.Sha256Hash 
class BootStrap { 
    def init = { servletContext -> 
     def roleUser = new ShiroRole(name:'USER') 
     roleUser.addToPermissions('auth:*') 
     roleUser.addToPermissions('controller:action') 
     roleUser.save(flush:true, failOnError: true) 
     def testUser = new ShiroUser(username:'kermit',passwordHash:new Sha256Hash("password").toHex()) 
     testUser.addToRoles(roleUser) 
     testUser.save(flush:true, failOnError: true) 
    } 
    def destroy = { 
    } 
} 

role.User.addToPermissions 라인을 살펴보십시오. 여기에서 컨트롤러와 작업에 권한을 부여합니다. 역할에 권한이없는 경우 사용자는 액세스가 거부 된 페이지로 리디렉션됩니다. shiro 플러그인 페이지에 권한을 지정하는 방법에 대한 설명이 있습니다. http://www.grails.org/plugin/shiro 나머지 응용 프로그램 기능에 대한 권한을 추가해야합니다. 이러한 권한을 사용자에게 직접 추가 할 수도 있습니다. 테스트를 위해 유용하거나 특별한 역할을 위해 새 역할을 설정하지 않으려는 경우가 있습니다.

btw : 현재 shiro 버전에서는 작동하지 않는 sha1hash가 아니라 sha256hash를 사용해야합니다.

class SecurityFilters { 
    def filters = { 
     all(uri: "/**") { 
      before = { 
       // Ignore direct views (e.g. the default main index page). 
       if (!controllerName) return true 

       // Access control by convention. 
       accessControl() 
      } 
     } 
    } 
} 

이 모든 컨트롤러에 대한 액세스 제어를 설치하지만보기 (색인 페이지)를 직접하지 않습니다 : 우리가해야 할

마지막은 /conf/SecurityFilters.groovy 클래스를 만드는 것입니다.

지금 그것을 시도하고 프로젝트를 실행하는 데 도움이

grails run-app 

희망을!

+0

친애하는 Ralf. 물론 우리는 사용자 및 역할 도메인 클래스를 추가해야합니다. 사용자 및 역할 도메인의 컨텐트에서 편집 할 수 있습니까? 부디. :) 또한 grails generate-views 명령을 사용하여 뷰를 생성해야합니까? – Shah

+0

예제가 완료되어 작동합니다 - ShiroRole 및 ShiroUser가 위의 명령문에 의해 생성됩니다! – rdmueller

+0

친애하는 랄프 당신 Gudings 완벽한 Thnks 있습니다. 글쎄 지금 나는 이미 사용자 및 역할 클래스와 인덱스 페이지를 갖고 싶습니다. (조회수). UserController라는 컨트롤러가 있고 로그인 및 로그 아웃 동작이 있습니다. 이제 어떻게 그 보안을 해당 코드에 적용 할 수 있습니까? – Shah

관련 문제