我有一个像这样的用户模型
@Entity
@Table(name="SHOPPER")
public class User extends GenericModel {
@Id
@Column(name="SHRFNBR")
@GeneratedValue(generator="SEQ_SHP", strategy=GenerationType.SEQUENCE)
@SequenceGenerator(name="SEQ_SHP", sequenceName="SEQ_SHP", allocationSize=1)
public Long id;
@Column(name="SHLOGID")
public String email;
@Column(name="SHLPSWD")
public String password;
public static User isUser(String user, String pass){
return User.find("byEmailAndPassword", user, pass).first();
}
}
在数据库密码上,其RAW类型和在控制器上使用RSA进行编码。
主要的是它没有找到任何结果,因为进入数据库的二进制文件似乎与该字段上的二进制文件不同。
起初我认为它可能是应用程序上的一些字符编码问题,但后来我指向相同的数据库,但在生产和它工作。所以我检查了Devel DB并发现另一个Characterset而不是 ISO-8859-1 (prod) ISO-8859-15 (devel)似乎没什么不同。
更新devel characterset之后,情况就是一样的。是否有其他地方RSA字符串在DB上编码错误?
流程说明:
该过程是一个登录过程,用户在该过程中插入电子邮件和密码,最后一个过程使用RSA进行编码,并将结果发送给DB进行比较。
DB上的字段包含类似这样的值:
CB4F3ECB7763C98EF67CA761700D1FB255F90E4473B1BB594B2238756307DF2D155D57A2CBA2930C162CB0634765D48EA111F743F6825F2457340148F680E300
更多信息:
答案 0 :(得分:0)
不要将二进制数据映射到String,而是使用byte [],这样就不会出现任何字符编码问题。