0

私の Web アプリケーションでは、ユーザー (ロール USER) に、自分だけしか見ることができないプライベート ページを持たせたいと考えています。また、すべてのユーザーのすべてのプライベート ページを表示できるスーパー管理者 (ロール ADMIN) も必要です。

したがって、次のように URL をモデル化します。

/user/{userId}/...

ADMIN とは別に、userid を持つ USER のみがこのページを呼び出すことができるようになりました。ユーザーは動的に追加でき、そのユーザー ID は生成されたシリアル番号になります。

次のようにモデリングを開始しました。

<http pattern="/user/**" use-expressions="true"  >
    ...
    <intercept-url pattern="/user/**" access="hasAnyRole('ROLE_USER', 'ROLE_ADMIN')" />
    ... 
</http>

しかし、そうすると、たとえば、userid 2 の USER が呼び出せるようになります。/user/1/...

これを行う適切な方法は何ですか?誰かが私に例を教えてもらえますか?

4

1 に答える 1

2

の userId は/user/{userId}/、ユーザーが ADMIN ロールを持っている場合にのみ意味があります。他のユーザーの場合は、パラメーターを無視して使用してください

UserDetails userDetails =
      (UserDetails)SecurityContextHolder.getContext().getAuthentication().getPrincipal();

if('ROLE_ADMIN' in userDetails.getAuthorities() ){
    //get user indentified by userId
}
else{
   //get current user 
}

現在のユーザー関連情報を取得します。

于 2013-01-14T02:59:58.070 に答える