1

spring security ui プラグインに問題があります。SecUser クラス (ユーザーに関する情報を格納するクラス) にメール フィールドを追加しようとしています。ただし、s2ui-override で生成された Spring Security Management Console には「email」フィールドはありません。一方、ドキュメントにより、これは利用可能です(リンク):

デフォルトでは、標準フィールド (username、enabled、accountExpired、accountLocked、および passwordExpired) のみが使用可能ですが、これは grails s2ui-override スクリプトでカスタマイズ可能です - 構成のセクションを参照してください。

s2ui オーバーライド スクリプトを使用しようとしましたが、効果がありません。
これは簡単なことだと思いますが、何時間も経っても自分で解決策を見つけることができません。誰かがこれを行う方法を知っている場合は、教えてください;)

と私のユーザークラスで:

class SecUser {

    transient springSecurityService

    String username
    String password
    String email
    boolean enabled
    boolean accountExpired
    boolean accountLocked
    boolean passwordExpired

    static constraints = {
        username blank: false, unique: true
        password blank: false
        email blank: false, email:true
    }

    static mapping = {
        password column: '`password`'
    }

    Set<SecRole> getAuthorities() {
        SecUserSecRole.findAllBySecUser(this).collect { it.secRole } as Set
    }

    def beforeInsert() {
        encodePassword()
    }

    def beforeUpdate() {
        if (isDirty('password')) {
            encodePassword()
        }
    }

    protected void encodePassword() {
        password = springSecurityService.encodePassword(password)
    }

    @Override
    public String toString(){
        return "User - "+username;
    }
}
4

1 に答える 1

0

ユーザー/編集ビューからソース コードを見ることができます。

    <table>
    <tbody>

        <s2ui:textFieldRow name='username' labelCode='user.username.label' bean="${user}"
                        labelCodeDefault='Username' value="${user?.username}"/>

        <s2ui:passwordFieldRow name='password' labelCode='user.password.label' bean="${user}"
                            labelCodeDefault='Password' value="${user?.password}"/>

        <s2ui:checkboxRow name='enabled' labelCode='user.enabled.label' bean="${user}"
                       labelCodeDefault='Enabled' value="${user?.enabled}"/>

        <s2ui:checkboxRow name='accountExpired' labelCode='user.accountExpired.label' bean="${user}"
                       labelCodeDefault='Account Expired' value="${user?.accountExpired}"/>

        <s2ui:checkboxRow name='accountLocked' labelCode='user.accountLocked.label' bean="${user}"
                       labelCodeDefault='Account Locked' value="${user?.accountLocked}"/>

        <s2ui:checkboxRow name='passwordExpired' labelCode='user.passwordExpired.label' bean="${user}"
                       labelCodeDefault='Password Expired' value="${user?.passwordExpired}"/>
    </tbody>
    </table>

メール欄はありません。edit.gsp および create.gsp ファイルをソースから grails-app/views/user/ にコピーし、ユーザー名フィールドの後に次のコードを貼り付けて編集する必要があります。

    <s2ui:textFieldRow name='email' labelCode='user.email.label' bean="${user}"
                    labelCodeDefault='email' value="${user?.email}"/>

grails-app/i18n/ パスにspring-security-core-local.propertiesを作成し、新しいプロパティを書き込む必要があります

user.email.label=Email

そしてもちろん、正しいドメイン クラスでプロパティemailを作成する必要があります。

于 2013-04-08T14:29:17.110 に答える