gpt4 book ai didi

grails - 如何使用拦截器在不使用带有 grails 3 的 Spring Security 的情况下创建登录功能

转载 作者:行者123 更新时间:2023-12-02 15:42:15 25 4
gpt4 key购买 nike

系统有两个 Grails 应用程序:

  • 使用 springsecurity 的私有(private)后台和一个包含运算符(operator)用户名、密码、登录失败次数等的运算符(operator)域对象。
  • 用户注册、登录和使用系统的公共(public) Web 前端。用户域对象保存用户的用户名、密码等。

  • 因为我们在后台使用 springsecuirty,所​​以我假设我们不能再次将它用于 Web(配置和数据库会冲突)。此外,网络只需要一个非常基本的身份验证(所有页面都需要一个有效的 session ,除了注册和登录表单本身)。

    设置登录表单和拦截器很容易。

    问题是,登录表单实际上应该在 Controller 中做什么?我可以检查数据库中的用户名和密码是否匹配,然后我可能需要创建一个 session , session 超时等。我在哪里可以找到有关如何执行此操作的文档? http://docs.grails.org/3.1.1/ref/Servlet%20API/session.html告诉您如何注销,但不登录。我大概需要在数据库中存储 session (以便用户可以访问任何服务器)等。

    最佳答案

    通过查看我的一些旧 Java 代码,我已经找到了一些方法。

    拦截器如下所示:

    class AuthInterceptor {
    public AuthInterceptor() {
    // allow the login form and register form to work.
    matchAll().excludes(controller: 'auth')
    }
    boolean before() {
    if(session.getAttribute("user")== null ) {
    // jump to the login form if there is no user attribute.
    redirect controller: 'auth', action: 'login'
    return false
    }
    true
    }
    boolean after() { true }
    void afterView() {
    // no-op
    }

    Controller 如下所示:
    class AuthController {
    def index() { }

    def login() {
    def email = params.email
    def password = params.password

    if (email != null) {
    // It would be better to invalidate the old session
    // but if we do, we cant get a new one...
    // session.invalidate()

    User user = User.findByEmail(email);
    if (user != null) {
    log.error("user.pass:" + user.password + " pass:" + password)
    // @TODO handle password encryption
    if (user.password == password) {
    session.setAttribute("user", user)
    redirect(controller:"dashboard")
    }
    }
    flash.message = "email or password incorrect"
    }
    render (view:"login")
    } // login()

    但是,我还没有找到我们可以在哪里设置 session 超时。

    关于grails - 如何使用拦截器在不使用带有 grails 3 的 Spring Security 的情况下创建登录功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55968086/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com