スプリングセキュリティRESTfulパスベースのロールコントロール
/user/{userId}/* # Only user with userId and admin can access
/order/{orderId}/* # Only the order owner of orderId and admin can access
現在のソリューションは、@Current
注釈はサーバに渡さtoken
に関連しているカスタマイズ注射です。 @PathVariable("user-id") UserEntity user
は、我々はそれらすべてを設定への任意の簡単な方法があり、あまりにも多くの注釈を持っ
@PreAuthorize("#user.id == #u?.id")
public UserDTO access(@P("user") @Current UserEntity requestUser,
@P("u") @PathVariable("user-id") UserEntity user)
@PreAuthorize("#user.id == #uid && (#order == null || #order?.user?.id == #uid)")
public Message access(@Current @P("user") UserEntity user,
@PathVariable("user-id") @P("uid") Long uid,
@PathVariable("order-id") @P("order") OrderEntity order)
春データとパスから得ていますか?
は、ユーザチェックをカスタマイズすることはできません使用.antMatchers("/user/[0-9]+/*").hasRole("ROLE_USER")
- をしようとしました。
- AOPは、あまりにも複雑で、URLベースにすることはできません。
多分これは実行可能な方法です。 – wener
これは私のプロジェクトに通常適用するアプローチです。おそらく、あなたが望むものを達成するためのより良い方法があるかもしれませんが、私はこの方法を非常に読みやすく、効果的であると感じています。 – davioooh