نحوه لاگین شدن کاربر فقط در مرحله اول
دوستان سلام.
خسته نباشید. میخواستم کاری کنم کاربر بار اول که لاگین کرد دیگه فرم لاگین نمایش داده نشه و مستقیم به اکتیویتی main بره.
خب من میام از پرفرنس ها استفاده میکنم. اما اینم اگه گوشی روت شده باشه میشه دستکاریش کرد.
چکار کنم بنظرتون؟؟چه را حلی پیشنهاد میدید؟؟؟؟ نرم افزار هایی مثل تلگرام و وایبر از چه ترفندی استفاده میکنند؟
برای ورود کاربر از jwt,oauth2 معمولا استفاده میشه و یو توکن به کاربر بعد از ورود میده و اون رو ذخیره کنید مشکلی پیش اگه کاربر اونو ببینه و اگه دستکاری کنه توکن خراب میشه. و اطلاعات توش رمز نگاری شدس و نگران اینکه کسی خودشو جای کس دیگه جا بزنه نباشید.
اگه بعد از ورود کاربر id کاربر در sp ذخیره کنید ضعف امنیتیه و نباید این کار رو بکنید.
بهترین کار برای این کار استفاده از قسمت Account های خود گوشی هست ، برای اینکار بعد از لاگین کاربر میتونید اطلاعات کاربر رو در قسمت account گوشی ذخیره کنید و در دفعات بعدی اجرا اطلاعات رو از همین قسمت بخونید
این نمونه کد هست که در یکی از پروژه هام استقاده کردم از retrofit استفاده شده بعد از دریافت توکن در دیتابیس ذخیره و ازش خونده و در هر رویکوست قرار میگیره.
public class ApiClient {
private static final String BASE_URL = "http://sampleurl";
private static Retrofit retrofit = null;
public static Retrofit getClient() {
if (retrofit==null) {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(60, TimeUnit.SECONDS)
.connectTimeout(60, TimeUnit.SECONDS)
.addInterceptor(logging)
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
Request original = chain.request();
// Request customization: add request headers
Request.Builder requestBuilder = original.newBuilder().header("jwtToken", SQLiteDB.getInstance().getSettingJwtToken());
Request request = requestBuilder.build();
return chain.proceed(request);
}
})
.build();
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
}
return retrofit;
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .