コントローラメソッドでスプリングセキュリティを実装しました。以下はメソッドレベルのスプリングセキュリティを確認する方法
私の春のsecurity.xml
される - 以下>
<!-- URL pattern based security -->
<security:http auto-config="false" entry-point-ref="authenticationEntryPoint"
use-expressions="true">
<custom-filter ref="authenticationFilter" position="FORM_LOGIN_FILTER" />
<security:intercept-url access="hasAnyRole('ROLE_ADMIN','ROLE_USER')" pattern="/common/admin/**" />
<security:intercept-url pattern="/common/accounting/**" access="hasRole('ROLE_USER')" />
<security:logout logout-url="/j_spring_security_logout" invalidate-session="true" logout-success-url="/login"/>
</security:http>
は私のコントローラ
@Secured({"ROLE_ADMIN"})
@RequestMapping(value = "/common/admin/addAdmin", method = RequestMethod.GET)
public String add(ModelMap map) {
map.addAttribute(new Administrator());
return "/common/admin/addAdmin";
}
@Secured({"ROLE_ADMIN"})
@RequestMapping(value = "/common/admin/addAdmin", method = RequestMethod.POST)
public String processadd(
@ModelAttribute("administrator") Administrator administrator) {
this.administratorManager.addAdmin(administrator);
return "/common/admin/success";
}
である私は、URL /共通/管理/ **許可adminロールとuserロールの両方に適用されます。しかし、私は管理者のコントローラでいくつかの制限を行います。ユーザーが/ common/admin/*にユーザー役割として入ると、管理役割だけのための方法にも参加できます。
どうすれば解決できますか?
ありがとうございます!
こんにちは、私はすでにsecurity.xmlに を追加しました。しかし、セキュリティをチェックする方法は機能していません。私はどのように行いますか? –
sudo
@sudo:適切な問題を切り抜いてください。質問テキストには明白な質問はありません。何も期待どおりに動作していないというヒントはありません。 – Ralph
'@Secured'アノテーションが' @RolesAllowed'と機能的に同じであるという主張について私は同意しません。ロールのリストの1つをチェックしているだけなら、それはおそらく真ですが、 '@ Secured'アノテーションはSpring Securityの' AccessDecisionManager'と投票システムを使用するのでより強力です。属性は単純な役割に限定されません。 –