2017-03-01 15 views
-1

私は2つのドメインモデル OrganizationとTicketQuestionを持つアプリケーションを持っています。 認証されたユーザー、このようないくつかの組織に、各ユーザーの許可証 ことを解決するために、組織の性質を持っているチケット作成したい:Organization2春のセキュリティを使用してオブジェクトを認証しますか?

TicketController.javaにOrganization1

User2の許可に

User1の許可証は、保存を持っていますチケットを作成するメソッド。 私はこの脆弱性があります:User1はOrganization2を持つチケットでメソッドを呼び出すことができます(これにはアクセス権がありません)。 GETメソッドで認証データにHibernateフィルタを使用していますが、ユーザーが永続化したいと思うデータを保護する方法を知っていません。

/ticket/save 

{ 
    id:-1, 
    organization:{ 
    id:2, 
    title:'organization2' //not allowed this organization 
    } 
} 


@Entity 
@Table(name = "core_organization_structure") 
public class OrganizationStructure { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Long id; 

    @Column(name = "title", nullable = false) 
    private String title; 
} 

@Entity 
@Table(name = "core_Ticket") 
public class Ticket { 


    ..some prop 

    @ManyToOne 
    @JoinColumn(name = "org_id", nullable = false) 
    private OrganizationStructure org; 
} 

答えて

0

フォームが送信されたら、認証されたユーザーのアクセス許可を読み込み、実行しようとしている操作を実行する権限があることを確認する必要があります。

権限を持たない組織のチケットをユーザーが作成しようとしている場合。レコードを永続させず、適切に処理してください。 (例外を投げて401を返すなど)

+0

はい、基本的な解決策の1つはそれです。すべてのこの問題を持っている10のプロパティを持っているドメインモデルがあると想像してください。別の問題:私は、更新と削除の方法を追加し、多分この3つの方法よりも多くの問題がある場合、組織は100ドメインモデルでこのチェックコードを100回書くと、私は私のサービスの外で問題を解決したい。 –

関連する問題