Grails 2.0.3 では、Spring Security Core をインストールし、チュートリアルに従って User、UserRole、および Role オブジェクトを作成しました: http://blog.springsource.org/2010/08/11/simplified-spring-security-with-grails /
別のデータベースからオブジェクトにアクセスする準備として、2 番目のデータソースを追加することを決定するまで、すべてうまくいきました。DataSource.groovy は次のようになります。
test {
dataSource_product {
dbCreate = "update"
url = "jdbc:mysql://localhost/products"
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
username = "blah"
password = "blah"
loggingSql = true
dialect = 'org.hibernate.dialect.MySQL5InnoDBDialect'
}
dataSource {
dbCreate = "update"
url = "jdbc:mysql://localhost/core"
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
username = "blah"
password = "blah"
loggingSql = true
dialect = 'org.hibernate.dialect.MySQL5InnoDBDialect'
}
}
datasource_product を追加しただけなのに、ログインできません。これをコメントアウトして (Bootstrap.groovy で) ユーザーを再作成すると、再度ログインできます。Bootstrap.groovy には以下が含まれます。
def init =
{ servletContext ->
// Add in roles
Role.withTransaction {
def adminRole = Role.findByAuthority ( Role.ROLE_ADMIN ) ?: new Role ( authority: Role.ROLE_ADMIN ).save ( failOnError: true )
def adminUser = User.findByUsername ( 'admin' ) ?: new User (
username: 'blah',
password: 'blah',
enabled: true ).save ( failOnError: true )
if ( !adminUser.authorities.contains ( adminRole ) ) UserRole.create ( adminUser, adminRole )
}
何か案は?