84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
编写好了JAVA WEB,想像桌面软件那样,第一次使用的时候需要输入一个key,验证通过则能使用整个系统,否则就无法访问任何页面。
key可以包含授权使用时长,比如1个月。
没有输入正确的key,则无论访问什么url路径,都会跳转到输入key的页面(和用户的登录页面一样)
请问这该怎么实现?
认证0级讲师
簡単に言うと2種類あります
相手のマシンに基づいてキーを生成します。
暗号化メソッドを自分で実装するだけです。 (逆解を必要としない要約アルゴリズムなどのアルゴリズムで十分です) 次に、プロジェクトがデプロイされているコンピューターのメイン ハードウェア (マザーボード、ネットワーク カード、ハードディスクなど) mac地址 を取得します。これらのデータを使用してプロジェクト内の値を計算します。それがユーザーが入力したキーと同じである場合、正式なプロジェクトが開始されます。異なる場合は、キーを入力するように求められます。 相手のハードウェア情報をどうやって取得するかは、例えばプロジェクトをデプロイした仲間に送ってもらって、その計算で鍵を計算して送るだけです。それを戻します。
mac地址
自分でキーを生成し、どこにでも配布します。
たとえば、別の Web サービスを構築し、このマシンを使用して UUID のバッチを生成し、それを配布します。その後、プロジェクトが開始された後、最初にこのサーバーに検証の実行を要求します。サーバーはキーが存在するかどうかを確認します。キーが使用されたマシンは最初のアクティベーションと同じマシンですか? (同じ非可逆アルゴリズムを使用するだけです) または、さらに単純には、擬似ランダム アルゴリズム (可逆アルゴリズム) を使用して、シードに基づいてキーのバッチを計算し、キーごとにシードをデコードできます。 プロジェクト開始時に入力キーを復号化し、それがシードであるかどうかを判断します。
UUID
他の手段でこの key を顧客に提供した場合に限ります
key
アクセスが違法かどうかを確認します。cookie を使用して、ログインしたかどうかを判断します。検証がより厳格な場合は、いくつかの ip アドレス、mac アドレス、その他の強力な検証を追加することもできます。結局のところ、あなたの顧客層はおそらく一般大衆ではありません。
cookie
ip
mac
許可された使用期間は、月単位で計算されるとのことですが、さらに上級の顧客は半年単位で計算される可能性があるため、これは生成時に決定されます。 を保存するには、この redis にアクセスするたびに、key から cookie を取得できます (ほとんどは暗号化する必要があります)。 key に移動して、残りの認証時間を取得できます keyredis。
redis
springmvc
キーがユーザーにどのようにバインドされているかわかりません。これはユーザーの一意の識別子である必要があります。一致するユーザーの一意の識別子とキーをデータベースまたはキャッシュに保存して、ユーザーに権限があるかどうかを判断できます。ページジャンプに関してはフィルターで十分です。
ログインに成功した後に秘密鍵を生成し、それを Cookie に保存し、Web ページを更新するたびに Cookie の有効期限を設定できます。これは比較的簡単な方法です。
他の外部証明書がない場合、サブジェクトの要件と「ユーザー名とパスワードを使用してログインした後の一定期間のログイン状態を記録する」の違いは何ですか?
ご返信ありがとうございます。申し訳ありませんが、回答は 1 つしか受け付けられません。
簡単に言うと2種類あります
相手のマシンに基づいてキーを生成します。
暗号化メソッドを自分で実装するだけです。 (逆解を必要としない要約アルゴリズムなどのアルゴリズムで十分です)
次に、プロジェクトがデプロイされているコンピューターのメイン ハードウェア (マザーボード、ネットワーク カード、ハードディスクなど)
mac地址
を取得します。これらのデータを使用してプロジェクト内の値を計算します。それがユーザーが入力したキーと同じである場合、正式なプロジェクトが開始されます。異なる場合は、キーを入力するように求められます。相手のハードウェア情報をどうやって取得するかは、例えばプロジェクトをデプロイした仲間に送ってもらって、その計算で鍵を計算して送るだけです。それを戻します。
自分でキーを生成し、どこにでも配布します。
たとえば、別の Web サービスを構築し、このマシンを使用して
UUID
のバッチを生成し、それを配布します。その後、プロジェクトが開始された後、最初にこのサーバーに検証の実行を要求します。サーバーはキーが存在するかどうかを確認します。キーが使用されたマシンは最初のアクティベーションと同じマシンですか? (同じ非可逆アルゴリズムを使用するだけです)または、さらに単純には、擬似ランダム アルゴリズム (可逆アルゴリズム) を使用して、シードに基づいてキーのバッチを計算し、キーごとにシードをデコードできます。
プロジェクト開始時に入力キーを復号化し、それがシードであるかどうかを判断します。
他の手段でこの
key
を顧客に提供した場合に限りますアクセスが違法かどうかを確認します。
cookie
を使用して、ログインしたかどうかを判断します。検証がより厳格な場合は、いくつかのip
アドレス、mac
アドレス、その他の強力な検証を追加することもできます。結局のところ、あなたの顧客層はおそらく一般大衆ではありません。許可された使用期間は、月単位で計算されるとのことですが、さらに上級の顧客は半年単位で計算される可能性があるため、これは生成時に決定されます。
を保存するには、この
redis
にアクセスするたびに、key
からcookie
を取得できます (ほとんどは暗号化する必要があります)。key
に移動して、残りの認証時間を取得できますkey
redis
。springmvc
キーがユーザーにどのようにバインドされているかわかりません。これはユーザーの一意の識別子である必要があります。一致するユーザーの一意の識別子とキーをデータベースまたはキャッシュに保存して、ユーザーに権限があるかどうかを判断できます。ページジャンプに関してはフィルターで十分です。
ログインに成功した後に秘密鍵を生成し、それを Cookie に保存し、Web ページを更新するたびに Cookie の有効期限を設定できます。これは比較的簡単な方法です。
他の外部証明書がない場合、サブジェクトの要件と「ユーザー名とパスワードを使用してログインした後の一定期間のログイン状態を記録する」の違いは何ですか?
ご返信ありがとうございます。申し訳ありませんが、回答は 1 つしか受け付けられません。