すべてのコントローラーで Spring Security を構成しています。「システムが有効になっている」場合にのみ、いくつかのメソッドの実行を開始したい。この情報は、特定の静的メソッドを介してコントローラー全体からアクセスできます (非静的にすることができます)。私の要点は、すべてのメソッドの開始時に Java コードで明示的なチェックを行うことを避けたいということです。Spring Security 経由でそこに到達するにはどうすればよいですか?
質問する
954 次
2 に答える
1
1 つの方法は、ハンドラー インターセプターを使用することです。
一般的な考え方は次のとおりです。
(1)ブロックしたい URL パターンを設定します。
<util:list id="sysEnableCheckUrlPatterns" value-type="java.lang.String">
<beans:value>/module1/**</beans:value>
<beans:value>/module2/**</beans:value>
</util:list>
(2)インターセプターを書きます:
public class SysEnableCheckInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
/*
If system enabled then return true. Otherwise return false (and optionally write something in response)
*/
}
}
(3)そのインターセプターを構成します。3.1 では、次のように実行できます。
@Configuration
public class AppConfig extends WebMvcConfigurerAdapter {
@Resource(name="sysEnableCheckUrlPatterns")
/* or use @Autowired or @Inject if you like */
private String[] sysEnableCheckUrlPatterns;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new SysEnableCheckInterceptor()).addPathPatterns(sysEnableCheckUrlPatterns);
}
}
于 2013-03-20T17:14:39.233 に答える
0
セキュリティアノテーションで SPEL (Spring Expression Language) を使用できます。
http://static.springsource.org/spring-security/site/docs/3.0.x/reference/el-access.htmlを参照
于 2013-03-20T03:14:07.947 に答える