在 Grails 3 中自定义 Spring Security 3.1.1 登录表单

Customise Spring Security 3.1.1 Login form in Grails 3

我已在我的 application.yml 中声明 Spring 安全性作为依赖项,当 运行 我的应用程序默认登录表单按预期工作。我想设计表单样式,以便我的应用程序是无缝的。

在 views/auth 我有 auth.gsp 其中包含以下代码:

<form method="POST" action="${resource(file: 'j_spring_security_check')}">
    <table>
        <tr>
            <td>Username:</td><td><g:textField name="j_username"/></td>
        </tr>
        <tr>
            <td>Password:</td><td><input name="j_password" type="password"/></td>
        </tr>
        <tr>
            <td colspan="2"><g:submitButton name="login" value="Login"/></td>
        </tr>

    </table>
</form>

此表单按预期显示,但是在提交表单时没有任何反应。我假设这是因为 {resource(file: 'j_spring_security_check')} 不是它应该执行的操作。我从 here 那里得到了这段代码,我相信这是用 Grails 2 编写的。知道正确的做法是什么吗?

我很震惊地发现六年前的博客 post 并非 100% 正确。阅读 the documentation,尤其是 "What’s New in Version 3.0" 部分,也许你会更幸运。

以下是有效的自定义登录表单:

<form method="POST" action="${resource(file: '/login/authenticate')}" class="form-signin">
    <h2 class="form-signin-heading text-center">Login</h2>

    <input type="text" class="form-control" name="username" placeholder="Username"/>
    <input type="password" class="form-control" name="password" placeholder="Password"/>

    <label class="checkbox text-center">
        <input type="checkbox" value="remember-me" id="rememberMe" name="remember-me"> Remember me
    </label>

    <button class="btn btn-lg btn-default btn-block" type="submit">Login</button>
    </form>

需要注意的主要事项是:

  • j_spring_security_check 现在是 /login/authenticate
  • j_username 现在是 username
  • j_password 现在是 password

用于 Grails 3 的 Spring 安全性 3 的文档是 here