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