9

Spring MVC で次のメソッドを使用し、Spring Security を使用しています。

@PreAuthorize("#phoneNumber == authentication.name")
@RequestMapping(value = "/{phoneNumber}/start", method = RequestMethod.POST)
public ModelAndView startUpgrading(@PathVariable("phoneNumber") String phoneNumber,
       ....
}

私は次のような認証をシミュレートすることができます:

public Authentication tryToAuthenticate(String accountName, String password) {
      UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(accountName, password);
    return authenticationManager.authenticate(token);
}

しかし、@PreAutorize で認証を設定する方法がわかりません。

アクセスが拒否されないように、テスト コンテキストを正しく設定するにはどうすればよいですか?

org.springframework.security.access.AccessDeniedException: Access is denied
at org.springframework.security.access.vote.AffirmativeBased.decide(AffirmativeBased.java:83)
at org.springframework.security.access.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:205)
4

3 に答える 3

0

たぶん、この古い投稿と公式ドキュメント16.3xml構成のメソッドセキュリティ式を確認してください。

私はあなたがあなたのxmlで宣言する必要があると思います:

また、トークンを認証するためのメソッドは、hasPermisions()である可能性があります。16.3.2組み込み式を確認してください

于 2012-08-24T08:49:32.783 に答える
0

認証を行う Bean のモック バージョンを宣言したいようです。これを宣言するには、テスト用の context.xml が必要になる場合があります。

于 2012-08-20T14:45:47.813 に答える