创建口令编解码器(Codec)

编解码器(Codec)(编码器-解码器的缩写)是转换字符串的一种方法。Grails提供了大量便捷的编解码器,而且已经元编程到了所有字符串实例上。
例如:
"<p>Hello</p>".encodeAsHTML()返回<p>Hello</p>
"You&Me".encodeAsURL()返回You+%26+Me
"ABC123".encodeAsBase64()返回QUJDMTlz
相应的还有decodeAsHTML()、decodeAsURL()、decodeAsBase64()方法完成以上转换的逆操作。
1.创建编解码器完成口令的加密
grails-app/utils/SHACodec.groovy
import java.security.MessageDigest;

class SHACodec {
static encode={
target->
MessageDigest md=MessageDigest.getInstance("SHA")
md.update(target.getBytes('UTF-8'))
return new String(md.digest()).encodeAsBase64()
}
}

2.使用,给User.groovy增加beforeInsert闭包
package com.rt

class User {

String login
String password
String role='user'

static constraints = {
login(blank:false,nullable:false,unique:true)
password(blank:false,password:true)
role(inList:['admin','user'])
}

/**
* 增加了isAdmin方法,GORM会到数据库找admin字段,但这个字段不存在
* 那就创建一个static transients列表,把admin加进去
* transients列表特别指明了那些不应该保存回数据库的字段
**/
static transients=['admin']

boolean isAdmin(){
return role=='admin'
}

def beforeInsert={
password=password.encodeAsSHA()
}

@Override
public String toString() {
login
}
}

当创建用户时会看到密码已经不是明文的了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值