0

私はgrailsが初めてです。通常、次のように、bootstrap.groovy でユーザーに権限を付与します。

def roleAdmin = Role.findByAuthority('ROLE_ADMIN') ?: new Role(authority: 'ROLE_ADMIN').save(failOnError: true)

def userMe = User.findByUsername('admin') ?: new User(username: 'jhon',
                password: ('adminme'),enabled: true).save(failOnError:true)

UserRole.create userMe, roleAdmin

ご覧のとおり、これは bootstrap.groovy の下で行われます。今度は、新しいユーザーを作成するときに権限も付与されるように、コントローラー (つまり、UserController) でそれを実行したいと考えています。私はそれが UserController の def save() の下で行われるべきか、そうでないかもしれないと考えていました。

助けてください。ありがとうございました。

4

2 に答える 2

0


やあ。自分で何かを作成したい場合は、ユーザー用とロール用のコントローラーを作成する必要があります。しかし、そのためのプラグインがあります: Spring Security UIには、管理に必要なものがすべて含まれています。

于 2012-08-06T08:04:05.297 に答える
0

Spring-Security-Coreプラグインが既にインストールされていると想定しています。このコードは、あなたが求めていることを行う必要があります。このコードをコントローラーに入れたいと思うでしょう。私は、すべての管理タスクを処理する AdminController と呼ばれるコントローラーに私のものを入れました。

 def addUser= {

    def userRole = SecRole.findByAuthority('ROLE_USER') ?: new SecRole(authority: 'ROLE_USER').save(failOnError: true)
    def adminRole = SecRole.findByAuthority('ROLE_ADMIN') ?: new SecRole(authority: 'ROLE_ADMIN').save(failOnError: true)

    /*create new user*/
    def user = SecUser.findByUsername("${params.username}") ?: new SecUser (
        username: params.username,
        password: params.password,
        enabled: true,
    ).save()

    /*Assign a user role*/
    if(params.accounttype.equals("User")){
        if (!user.authorities.contains(userRole)) {
            SecUserSecRole.create user, userRole
        }
    }
     /*Assign an admin role*/
    if(params.accounttype.equals("Admin")){
        if (!user.authorities.contains(adminRole)) {
            SecUserSecRole.create user, adminRole
        }
    }
}

gsp で、管理者がユーザーに特定の役割を割り当てることができる選択ボックスを作成しました

<g:form controller="admin" action="addUser">
<table>
  <tr>
    <td align ="right"><br>Username: <br></td>
    <td><br><g:textField name="username" value=""/><br></td>
  </tr>
  <tr>
    <td align="right"><br>Password:  <br></td>
    <td><br><g:textField name="password" value=""/><br></td>
  </tr>
  <tr>
    <td align="right"><br>Choose Role:<br></td>
    <td><br><g:select name="accounttype" from='${["User","Admin"]}'/><br></td>
  </tr>
  <tr>
    <td></td>
    <td><br><g:submitButton name="addUser" value="Add User" /></td></td>
  </tr>

必要に応じてコードを変更します。

于 2012-08-06T13:29:17.117 に答える