0

このようなユーザーモデルがあります

@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();
    }
}

DB パスワードでは RAW タイプで、コントローラーでは RSA でエンコードされています。

主なことは、DB に入るバイナリがフィールドにあるものとは異なるように見えるため、結果が見つからないことです。

最初は、アプリケーションの文字エンコーディングの問題である可能性があると考えていましたが、同じDBを本番環境で指摘したところ、うまくいきました。そこで、Devel DB を調べたところ、ISO-8859-1 (prod) の代わりに別の Characterset がISO-8859-15 (devel) であることがわかりました。

devel 文字セットを更新した後、状況は同じです。DBでRSA文字列が間違ってエンコードされている場所は他にありますか?

過程説明:

このプロセスは、ユーザーが電子メールとパスワードを挿入するログイン プロセスであり、最後のものは RSA でエンコードされ、結果は比較のために DB に送信されます。
DB のフィールドには、次のような値が含まれます。

CB4F3ECB7763C98EF67CA761700D1FB255F90E4473B1BB594B2238756307DF2D155D57A2CBA2930C‌162CB0634765D48EA111F743F6825F2457340148F680E300

より詳しい情報:

  • DB オラクル 10g
  • プレイ フレームワーク 1.2.4
4

1 に答える 1

0

バイナリ データを String にマップしないでください。代わりに byte[] を使用してください。これにより、文字エンコーディングの問題が発生しなくなります。

于 2013-03-09T14:48:39.030 に答える