【问题标题】:Basic Password Hashing Grails基本密码散列 Grails
【发布时间】:2015-05-03 02:11:32
【问题描述】:

我目前正在玩 Grails,并且正在制作一个基本的登录和会话系统(只是为了好玩)。

我目前在网页上有一个表单,它读取用户名和密码并将它们发送到控制器。目前控制器中的代码是这样的:

def login = {

  String inputPassword = params.password

if(params.username == "admin" && inputPassword == "changeme"){
  flash.message = "login succeed";
    session.user = "admin"
    }
else{
    flash.message = "login failed"
    }

  redirect(action: 'index')

}

  def logout = {
  session.user = null
  redirect(action: 'index')

}

现在,我知道将密码存储在原始文本中是个坏主意,所以我想尝试对密码进行哈希处理。

我假设这段代码从密码字段中获取输入并将其分配给变量 inputPassword:

 String inputPassword = params.password

可以使用某种 API 将其更改为如下所示:

String inputPassword = aHashOf(params.password)

检查步骤可能如下所示:

 if(params.username == "admin" && inputPassword == (whatever the final hash looks like) )

是否有 API 或内置函数可以帮助我解决这个问题?我是否试图以错误的方式解决这个问题?有什么建议吗?

另外,后来我学会使用数据库时,这个过程是否可以很容易地更改为使用数据库值?

【问题讨论】:

    标签: grails password-encryption


    【解决方案1】:

    虽然自己实现这样的东西来学习身份验证和授权的基本原理似乎是合理的,但对于实际用例来说,为此使用框架/库似乎更现实。

    在 Java/Spring 世界(其中 grails 是其中的一部分)中,有 spring-security 及其 grails 插件 spring-security-core 以及 apache shiro。插件的docs应该给你一个很好的起点如何使用spring security的api。

    【讨论】:

    • 非常感谢您提供的信息,我已经阅读了一些内容,但我似乎没有 BuildConfig.groovy 来添加 compile ':spring-security-core:2.0 -RC4'也是。 GRrails 3.0 中安装插件的过程是否不同?
    • 好吧,对于 grails 3,我认为没有像指向 spring 安全插件这样的明确解决方案。问题是,grails 3 相当新,所以一些主要插件缺乏对 grails 3 的支持(如 spring security)。但是,由于 grails 3 基于 spring boot,grails 可以使用引导中的某些“插件”/starter pom。对于 spring-security,您可以查看诸如 thisgithub example 之类的博客文章。
    猜你喜欢
    • 2018-05-16
    • 2013-06-21
    • 2011-02-18
    • 2016-07-30
    • 2015-08-13
    • 2012-05-30
    • 1970-01-01
    • 2011-06-23
    • 2018-01-20
    相关资源
    最近更新 更多