.net - 关于android 保持登录问题
巴扎黑
巴扎黑 2017-04-17 17:59:43
0
6
721

背景:

客户端是android;
服务端是webapi;
当我android登录之后,服务端会返回登录信息(包含token);
android保存登录信息至本地,此后就不需要再进行登录;
然后每次请求api 带上 token ,验证用户;

那么我问题来了,如果我把token 存数据库 ,那岂不是每次访问请求都需要去数据库验证用户?
如果我把token存session,那这个session 丢失怎么办?还有需要设置很长的效期?

各位老司机有没有更好的想法?


补充:

我说的token 存session 的意思是,数据库存一个token,session 存一个token;
用户首次登录后,把token存入数据库,并存入session中。然后session 过期前,这个用户的所有请求都通过session的token来验证身份。当session失效后,app (后台服务)重新登录一次(用户不可见);把数据库的token拿出来存入session;然后继续操作;
客户端请求接口的时候会带上token,在调用资源前 拿服务器的token(存在session里的) 跟 客户端的token 匹配;而不是每次都从数据库里拿出来;

巴扎黑
巴扎黑

全員に返信(6)
洪涛

キャッシュを検討してください。私は php によって開発されました。redis ネイティブ APP の場合は、android を使用しますか? 私の聞き間違いですが、sessionsession に基づいて保存されており、cookie ネイティブ APP は androidsession を使用できません。

いいねを押す +0
洪涛

これを見て、質問者が混乱しているのは、バックエンド トークンの検証に関するものであるはずです。もちろん、受信トークンが有効かどうかを確認するために、すべてのリクエストを検証する必要があります。効率の問題以上に。通常のアプローチでは、トークン永続ストレージ用の mysql (または他のデータベース) トークン テーブルと、ホット データ ストレージ用の Redis の 2 つのデータを使用します。トークン検証は Redis 内で実行され、データは Redis 内に残ります。バリュータイプのストレージを効率的にヒットできるかどうかが鍵となります。 Redis のホット データを更新する方法については、バックエンドを担当している人なら得意なはずなので、詳しくは説明しません。

いいねを押す +0
伊谢尔伦

これは通常、インメモリ データベースを使用しますよね?

いいねを押す +0
Peter_Zhu

......

いいねを押す +0
刘奇

................................

いいねを押す +0
巴扎黑

トークン節約セッションとは何を意味しますか?
トークンをローカルに保存し、APP が起動されるたびにトークンをメモリに読み取り、ネットワークがリクエストを行うたびにメモリからトークンを取得すると思います。データベースは毎回トークンを読み取ります。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート