モールプロジェクト(バージョン2.0)day13

パスポートユーザー認証

1.デザイン

1.1ビジネスプロセス

  1. ショッピングカートの前の機能は、ユーザーのログインを判断する必要はありません
  2. ショッピングカートの後の機能では、ユーザーが判断に合格するためにログインする必要があります
  3. ショッピングカート機能では、ユーザーログインを判断する必要がありますが、判断に失敗し、引き続き使用できます(プログラムは別のブランチを実行します)

1.2ログインの3つのデザインの進化

  1. セッション共有

ここに画像の説明を挿入

  1. トークン
    ここに画像の説明を挿入

  2. 認証センター

1.3認証センターの設計

ここに画像の説明を挿入
1ユーザーにパスを発行します(トークン)
2他のビジネス機能によって受信されたトークン(ユーザーのアクセスによって運ばれるの信頼性を確認します

第二に、コードの実装

2.1認証センターの統合

1認証センターの静的リソースを紹介します
ここに画像の説明を挿入
2検索モジュールページのログインリンクをクリックして認証センターのURLを追加します
ここに画像の説明を挿入
3テスト決済機能を追加します(実際の決済機能はddモジュールにあります)
ここに画像の説明を挿入
ここに画像の説明を挿入
4インターセプターを追加します(追加web-utilでのインターセプトインターセプターを使用すると、Webへのすべてのリクエストをインターセプターでインターセプトできます)
ここに画像の説明を挿入
5インターセプターを
ここに画像の説明を挿入
追加します6インターセプターの統合クラスを追加します


@Configuration
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
    
    
    @Autowired
    AuthInterceptor authInterceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry){
    
    
        registry.addInterceptor(authInterceptor).addPathPatterns("/**");
        super.addInterceptors(registry);
    }
}


7インターセプターを使用するメソッドと、インターセプターを使用しないメソッドがあります。
ここに画像の説明を挿入
インターセプターをスキャンするWebモジュールがインターセプターを
使用するかどうかを判別するだけでなく、アノテーションを使用して、特定のメソッドがインターセプターを渡す必要があるかどうかを識別することもできます
@LoginRequired

最初のタイプのメソッド:インターセプトする必要のないメソッド(インターセプターアノテーションなし)、@ LoginRequiredなしで直接手放す
2番目のタイプのメソッド:インターセプトする必要があるが、インターセプト検証が失敗する(ユーザーがログインしていない)または、ログインの有効期限が切れている)、引き続きアクセスできます。たとえば、ショッピングカート内のすべてのメソッド@LoginRequired(loginSuccess = false)
3番目のメソッド:インターセプトする必要があり、インターセプト検証に合格する必要があります(ユーザーログインが成功する) )パーティにアクセスするには@LoginRequired(loginSuccess = true)

おすすめ

転載: blog.csdn.net/qq_42082278/article/details/113948826