簡単なWebアプリケーション用の単純なフィルタの作成。ユーザ認証のためのインターセプタフィルタの作成
- ログイン
- レジスタ
- ホーム
- 機能
ユーザーがログイン名 "admin" を使用してログインし、または/家庭用リソースにアクセスしようとしていない場合または/機能リソースは、ログインページに戻す必要があります。
しかし、私はリダイレクトループの問題に遭遇しているようです。このアプローチの問題点は何ですか?私はそれがそのような要件のための不正確な解決方法であると感じます。
public class LoginInterceptor extends HandlerInterceptorAdapter {
private static final Logger logger = Logger.getLogger("LoginInterceptor.class");
// to be used checking session management for user.
@Override
public boolean preHandle(HttpServletRequest request,HttpServletResponse response,
Object handler) throws Exception {
logger.log(Level.INFO, "[][][][][] +++ prehandle");
if (request.getAttribute("username") != null) {
if (request.getAttribute("username").equals("admin")) {
return true;
} else
response.sendRedirect("/sessionmanagement/login");
return false;
} else if (request.getAttribute("username") == null & !request.getRequestURI().equals("/login")) {
// return false and redirect to login.
response.sendRedirect("/sessionmanagement/login");
return false;
}
// return false and redirect to login.
response.sendRedirect("/sessionmanagement/register");
return false;
}
}
'LoginInterceptor'のためのあなたのURLパターンは何ですか? – destan
リクエストURLに/ sessionmanagementが含まれているかどうかを確認するための条件も追加してください。ループを回避するのに役立ちます。 –
/*はインターセプタのURLパターンです – Catresl