パスポートユーザー認証
1.デザイン
1.1ビジネスプロセス
- ショッピングカートの前の機能は、ユーザーのログインを判断する必要はありません
- ショッピングカートの後の機能では、ユーザーが判断に合格するためにログインする必要があります
- ショッピングカート機能では、ユーザーログインを判断する必要がありますが、判断に失敗し、引き続き使用できます(プログラムは別のブランチを実行します)
1.2ログインの3つのデザインの進化
- セッション共有
-
トークン
-
認証センター
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)