简体   繁体   English

如何让唯一的用户ID不容易被猜到?

[英]How to make not easy to guess unique user id?

I able to add users to room but users have number that is easy to guess.我可以将用户添加到房间,但用户的号码很容易猜到。 Can I have easy add users with not easy to guess id number?我可以轻松添加不易猜出 ID 号的用户吗?

Entity is实体是

@Entity public class EntityUser {

    @PrimaryKey(autoGenerate = true)
    long userId;
    String userName;
}

Dao is道是

@Dao
public interface DaoUser {

    @Insert
    long insert(EntityUser entityUser);
}

Database is数据库是

@Database(entities = {EntityUser.class}, version = 1, exportSchema = false)
public abstract class UserDatabase extends RoomDatabase {

    abstract DaoUser daoUser();

}

I use我用

    userDatabase = Room.databaseBuilder(this,UserDatabase.class,"user.sqlite")
            .allowMainThreadQueries()
            .build();

    EntityUser user1 = new EntityUser();
    user1.userName = "Pandas";
    long user1id = userDatabase.daoUser().insert(user1);
    user1.userName = "Ellies";
    long user2id = userDatabase.daoUser().insert(user1);

I get 1 then 2.我得到1然后2。

I tried no autoGenerate but got Unique constraint error.我没有尝试过 autoGenerate 但遇到了唯一约束错误。

You can simply use UUID.您可以简单地使用 UUID。

@Entity public class EntityUser {
    @PrimaryKey(autoGenerate = true)
    long userId;
    String objectId;
    String userName;
}

And then when you generate an object you can do it like this:然后当你生成一个对象时,你可以这样做:

EntityUser user1 = new EntityUser();
user1.userName = "Pandas";
user1.objectId = UUID.randomUUID().toString();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM