ぐぐると使用例として、例えば、ユーザ登録完了後にそのままログインさせる、というケースがある。この場合、ユーザがフォームなどで明示的にIDとパスワードを入力するのではなく、プログラム的にログインする方法になる。
これの実現には、Servlet 3.0以上では、Spring Securityを設定した上でHttpServletRequest#login (Java(TM) EE 7 Specification APIs)を呼ぶ。
@RequestMapping(...
public void index(HttpServletRequest request) {
try {
request.login("username", "password");
} catch (ServletException e) {}
}
Spring Security Reference - 15.2.2 HttpServletRequest.login(String,String)にあるとおり、Spring SecurityとServlet APIの連携機能によるもの。仕組みとしては、loginメソッドを呼ぶと裏側で現在有効なAuthenticationManager
を使用してログイン処理が行われる、というのようだ。
2021/01/09 追記
他の方法としてAbstractPreAuthenticatedProcessingFilter
もある。https://kagamihoge.hatenablog.com/entry/2020/08/02/171003