当前位置: 首页 > 知识库问答 >
问题:

Grails 3 Spring Security覆盖登录表单

常俊爽
2023-03-14

我从spring文档中找到了一些可以覆盖登录控制器和表单的东西。我只想重写登录表单本身,同时保留默认控制器。我发现了这个:

在grails security插件中,登录gsp页面位于grails-app/views/login/auth.gsp,控制器位于grails-app/controllers/grails/plugin/springsecurity/logincontroller.groovy。我不认为可以通过简单地创建自己的实现来覆盖控制器,但是您应该可以通过将您自己的auth.gsp放置在应用程序中上面所示的相同路径中来覆盖gsp页面。

compile "org.springframework.boot:spring-boot-starter-security"
compile "org.springframework.security.oauth:spring-security-oauth2:2.0.8.RELEASE"

共有1个答案

经兴安
2023-03-14

好的,因为我没有使用grails spring security插件,所以我需要用下面的指南来替换登录页面:http://docs.spring.io/spring-security/site/docs/3.2.x/guides/form.html

实际上,我必须创建一个LoginController

class LoginController {
def auth() {

}

def error() {

}

然后,我将视图放置在相应的路径中:views/login/auth、views/login/error

<html>
<body>
<h1 id="banner">Login to Security Demo</h1>
<form name="f" action="/login/auth"
      method="POST">
    <table>
        <tr>
            <td>Username:</td>
            <td><input type='text' name='username' /></td>
        </tr>
        <tr>
            <td>Password:</td>
            <td><input type='password' name='password'></td>
        </tr>
        <tr>
            <td colspan="2">&nbsp;</td>
        </tr>
        <tr>
            <td colspan='2'><input name="submit" type="submit">&nbsp;<input name="reset" type="reset"></td>
        </tr>
    </table>
    <input type="hidden"
           name="${_csrf.parameterName}"
           value="${_csrf.token}"/>
</form>
</body>
</html>
    @Override
public void configure(HttpSecurity http) {
    http
        .authorizeRequests()
        .anyRequest().authenticated()
        .and()
        .formLogin()
            .loginPage('/login/auth')
            .defaultSuccessUrl("/")
            .failureUrl("/login/error")
            .usernameParameter("username").passwordParameter("password")
            .permitAll()
}

使用grails安全插件是很好的,但是我不知道如何使用OAuth2。如果有人有这方面的指导,我会改变我接受的答案。

 类似资料:
  • 我试图实现OIDC与Spring Boot-OKTA…我能够运行应用程序,一切都很好…我的问题在这里,是否有任何方法来覆盖默认的Spring Boot登录页面,在那里它将提供OKTA/任何OIDC提供商的链接,它将带到OKTA/相应的登录页面…我需要帮助覆盖/绕过默认的Spring Boot登录页面,当击中任何应用uri时,它应该直接带到OKTA/相应的OIDC Proverer登录页面… 请让我

  • 我尝试使用这个简单的代码登录,但在我点击登录按钮后,else选项“无效用户名或密码!”总是出现,即使用户名和密码是匹配的 控制器:

  • 我找过了,但什么也没找到。我有一个实体类,如下所示: 在application.properties中,我有以下配置: 我们将感谢您的帮助

  • 我是Symfony的新手,我正在尝试为我的应用程序创建一个access登录表单,但当我尝试登录时,它只会一次又一次地将我重定向到表单登录。在此之前,我使用了HTTP基本表单,它工作得很好,但现在我尝试使用登录表单,这是不可能的。 这是我的代码: 用户类(带教义): 安全Controller.php: Security.yml login.html.twig 有什么想法吗?谢谢

  • 问题内容: 我使用了tomcat,并简单地覆盖了默认的日志系统。如何在我的Spring应用程序中启用Wildfly上的Logback日志记录? 我在tomcat上的Logback.xml 问题答案: 您可以使用logback来配置应用程序中的日志记录。您不能使用logback为服务器配置日志记录。 要在配置中使用logback,您需要将更改为false或创建一个不包含子系统的。您还需要在部署中包括

  • 问题内容: 我们很少有扩展基本类的类。我们注意到我们使用了“退出一些睡眠”方法,并且希望在发生睡眠时进行记录。有没有一种方法可以覆盖Thread.sleep方法,在其中我可以添加一些自定义逻辑(即记录),然后仅调用实际的Thread.sleep()?这样,我就不必更改在我的基类中使用Thread.sleep的所有位置。我也愿意接受其他选择。 问题答案: 您不能重写方法,因为它是本机方法,所以无法对