Redis はユーザー トークンを保存します
電子商取引と同様のシステムを設計する場合、共通の要件は、各ページにログイン ユーザー情報を保持する必要があることです。 。
一般的な解決策は 2 つあります。
Cookie を使用して保存する
JWT を使用して保存する
しかし、システムで Redis キャッシュが使用されている場合は、3 番目の解決策があります。それは、ユーザー トークンを Redis にキャッシュすることです。
ログイン時にトークンを生成し、Redis に保存します
//生成一个token对象,保存在redis中 redisTemplate.opsForHash().put("token","user",user);
各ページが生成されたら、トークンを提供します
//以JSON字符串形式返回token @RequestMapping(value = "/getToken",method = RequestMethod.GET) @ResponseBody public User getToken(){ User user = (User) redisTemplate.opsForHash().get("token", "user"); return user; }
//发送ajax请求,获取token function get_token(){ $.ajax({ url:"getToken", type:"GET", dataType:"JSON", success:function(result){ //将返回的用户信息保存在token中 var token = result; //打印登录用户 console.log(token); //打印登录用户的id console.log(token.id); document.getElementById('username').innerText = "用户名:"+token.username; } }); }
ログアウト時にトークンを削除します
//注销 @RequestMapping("/logout") public String logout(){ redisTemplate.opsForHash().delete("token","user"); return "/login"; }
Redis トークンの問題への対処
java—redis に基づくトークンの処理
まず、トークンがフロントエンドおよびフロントエンドのユーザー情報を処理する方法であることを明確にしてください。メソッドには主に 2 つのタイプがあり、1 つはセッション ストレージに基づくもの、もう 1 つは Redis ストレージに基づくものです。この記事では、Redis に基づくユーザー情報処理についてのみ説明します。
ユーザーがログインした後のすべての情報対話で、ユーザー情報、特にユーザー ID などを渡す必要がある場合、毎回データベースにクエリを実行するのは明らかに賢明ではありません。ユーザー情報を保存するために Redis にスペースを確保し、ユーザー情報が必要になるたびに Redis からそのスペースを使用します。
最初に RedisUtil を作成します
@Component public class RedisUtil { @Autowired private RedisTemplate redisTemplate; //key-value是对象的 //判断是否存在key public boolean hasKey(String key) { return redisTemplate.hasKey(key); } //从redis中获取值 public Object get(String key) { return redisTemplate.opsForValue().get(key); } //向redis插入值 public boolean set(final String key, Object value) { boolean result = false; try { redisTemplate.opsForValue().set(key, value); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } //向redis插入值带过期时间 单位:分钟 public boolean set(final String key, Object value, long time) { boolean result = false; try { redisTemplate.opsForValue().set(key, value, time, TimeUnit.MINUTES); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } //redis删除值 public boolean del(final String key) { return redisTemplate.delete(key); } //批量删除某个字段开始的key public long batchDel(String key) { Set<String> set = redisTemplate.keys(key + "*"); return redisTemplate.delete(set); } }
RedisUtil を作成した後、値を Redis に保存する必要があります。このとき、キーをユーザーと話し合う必要があることに注意する必要があります。事前のフロントエンド、使用するフィールド名、および現在のエンド リクエストするとき、キーをヘッダーで渡す必要があります。値は暗号化され、最初のログイン後にフロントエンドに返されます。ヘッダー情報を取得した後, まず値を復号化し、その値をキーとして使用してユーザー情報を取得する必要があります。
@Component public class UserUtil { @Autowired private RedisUtil redisUtil; @Autowired private HttpServletRequest request; /** * 后台管理的登录id * * @return */ public JsonResult getUser() { String header = request.getHeader("#与前端约定的统一字段#"); //解密 String decrypt = DESUtil.decrypt(header); if (!redisUtil.hasKey(decrypt))return JsonResult.error("未登录"); User user = null; try { user = (User) redisUtil.get(decrypt); } catch (Exception e) { e.printStackTrace(); } if (decrypt == null) return JsonResult.error("权限不足"); return JsonResult.success(user); } }
必要なときは
JsonResult jsonResult = userUtil.getUser(); if (jsonResult.getCode() != 1) return jsonResult; //强转成对象。此处不用担心强转失败,因为存入的时候就是对象存储,只不过为了复用,存的是object类型 User user= (User) jsonResult.getData(); return JsonResult.success(#service层#); }
以上がRedis にユーザー トークンを保存する際の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Redisは、高性能と柔軟性のためにSQLデータベースを超えています。 1)Redisは、メモリストレージを介して非常に速い読み取りおよび書き込み速度を実現します。 2)複雑なデータ処理に適したリストやコレクションなど、さまざまなデータ構造をサポートしています。 3)シングルスレッドモデルは開発を簡素化しますが、高い並行性はボトルネックになる可能性があります。

Redisは、並行性が高く、遅延の低いシナリオの従来のデータベースよりも優れていますが、複雑なクエリやトランザクション処理には適していません。 1.Redisは、メモリストレージ、高速読み取り速度、および高い並行性と低遅延の要件に適しています。 2.従来のデータベースは、ディスクに基づいており、複雑なクエリとトランザクション処理をサポートし、データの一貫性と永続性が強い。 3. Redisは、従来のデータベースのサプリメントまたは代替品として適していますが、特定のビジネスニーズに応じて選択する必要があります。

redisisahigh-performancein-memorydatastructurturturestorettorethatedcelsinsinsinsversility.1)itsupportsvariousdatastructureslikestrings、lists、andsets.2)redisisaninmorydatabasewithpersistenceoptions、daturing datasafety.3)

Redisは主にデータベースですが、単なるデータベース以上のものです。 1.データベースとして、Redisは持続性をサポートし、高性能のニーズに適しています。 2。キャッシュとして、Redisはアプリケーションの応答速度を改善します。 3。メッセージブローカーとして、Redisはリアルタイム通信に適したPublish-Subscribeモードをサポートしています。

redisisamultifaCetedTooltoToolvesSasadatabase、server、andmore。

Redisisanopen-Source、In-MemoryDatastructurestoreStoreSadatabase、Cache、AndmessageBroker、ExcellingInspeedandversatility.ItisisWidely-susederCaching、Real-Timeanalytics、Session Management、AndleaderboardsdueTotutsuptorututrututrututruturturturturturturesturesaddataacys

Redisは、データベース、キャッシュ、メッセージブローカーとして使用されるオープンソースメモリデータ構造ストレージであり、高速応答と高い並行性が必要なシナリオに適しています。 1.Redisはメモリを使用してデータを保存し、マイクロ秒の読み取り速度と書き込み速度を提供します。 2.文字列、リスト、コレクションなどのさまざまなデータ構造をサポートします。3。Redisは、RDBおよびAOFメカニズムを介してデータの持続性を実現します。 4.シングルスレッドモデルと多重化テクノロジーを使用して、リクエストを効率的に処理します。 5.パフォーマンス最適化戦略には、LRUアルゴリズムとクラスターモードが含まれます。

Redisの関数には、主にキャッシュ、セッション管理、その他の機能が含まれます。1)キャッシュ関数はメモリを介してデータを保存して読み取り速度を向上させ、eコマースWebサイトなどの高周波アクセスシナリオに適しています。 2)セッション管理関数は、分散システムでセッションデータを共有し、有効期限のあるメカニズムを通じて自動的にクレンジングします。 3)リアルタイムメッセージプッシュおよびマルチスレッドシステムおよびその他のシナリオに適した、パブリッシュサブスクライブモード、分散ロック、カウンターなどのその他の機能。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

WebStorm Mac版
便利なJavaScript開発ツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール
