2016-04-29 6 views
0

私はSymfony 2.6を使用しています(古いですが、アップグレードはできません)。現在、私は小さな問題を得た:symfony - 正規表現によるアクセス制御

ユーザーが

www.url.com/product/G

になった場合、これは許されるべきであると彼はログインする必要はありません。しかし、彼はログインする必要があり

www.url.com/product/GProductに進みます。しかし、私はSymfonyにそれを正確に伝えるために何をすべきかを理解することができません。

私のsecurity.ymlファイル内の行には、以下の通りである:

access_control: 
    - { path: /product/[^A-Z]$, roles: IS_AUTHENTICATED_ANONYMOUSLY } 

この正規表現は一つだけの文字と一致する必要があります。しかし、それはすべきことをしません。私はまだログインするように頼まずに/product/GProductにアクセスできます。

どうすればこの問題を解決できますか?そして私はそれをまったく達成できますか?

+0

最後に大文字を実際に許可するには、 '/ product/[A-Z] $'を使う必要があると思います。 '[^ A-Z]'は大文字のASCII文字以外の1文字* other *と一致します。 –

答えて

0

で:

access_control: 
    - { path: ^/product/[A-Z]$, roles: IS_AUTHENTICATED_ANONYMOUSLY } 

あなたは、単一の大文字とURLのみを一致させることができます。静的^/product/GProductまたは正規表現で

access_control: 
    - { path: ^/product/GProduct, roles: IS_AUTHENTICATED } 
    - { path: ^/product/[A-Z]$, roles: IS_AUTHENTICATED_ANONYMOUSLY } 

:あなたは/product/GProductを確保したい場合は

はしかし、あなたは他の行を追加する必要があります。

関連する問題