2012-05-06 15 views
6

benim web sabitlemek için yay güvenlik kullanan, Bahar-roo bunu öğreniyorum zaman <http> düğümünde, ApplicationContext-security.xml config dosyasını oluşturulan Bir Kullanıcı nesnesi, öncelikle ADMIN iznini almak için giriş yapmanız gerekir. Ama aslında işe yaramadı. ? Kaydını kontrol:Yay güvenliği "? Parameter" biçimiyle eşleşemez mi?</p> <pre><code><intercept-url pattern="/userses?form" access="hasRole('ROLE_ADMIN')" /> </code></pre> <p>Size oluşturmak istediğinizde şu anlama gelir:

2012-05-06 11:39:11,250 [http-8088-7] DEBUG org.springframework.security.web.util.AntPathRequestMatcher - Checking match of request : '/userses'; against '/userses?form' 

çerçeve/userses yerine/userses kullanmak ile karşılaştırmak oluştururlar, kimlik doğrulama işlemi eşleşmedi dize olarak atlanır. kontrol, günlüğü

<intercept-url pattern="/userses/abc" access="hasRole('ROLE_ADMIN')" /> 

I/userses/abc, kullanıcı yetkisi yok algıladı ve hareket etmek/giriş sayfası talep: Yani

2012-05-06 11:46:44,343 [http-8088-7] DEBUG org.springframework.security.web.util.AntPathRequestMatcher - Checking match of request : '/uesrses/abc'; against '/userses/abc' 

Ben de başka bir url deneyin Bunu doğrulamak için Benim sorum şu: 3 destek "? parametre" desen bahar güvenli değil mi ya da bunu desteklemek için yapılandırmak için bir şey özledim? PS: Tüm kod, değişiklik olmadan roo tarafından üretildi, neden işe yaramadığını da merak ediyor.

cevap

6

Varsayılan olarak spring security, parametrelerle eşleşmeyen ant stili eşleme kullanır. Regex eşleşen Ancak parametreleri

üzerinde maçı şöyle tanımlayarak deneyin edebilirsiniz: Roo bunu otomatik olarak yapmaz neden

<http request-matcher="regex"> 
    <security:intercept-url pattern="\A/userses\?form.*\Z" access="hasRole('ROLE_ADMIN')" /> 
</http> 

bilmiyorum. Olması gerektiği gibi görünüyor.

+0

Cevabınız için teşekkür ederiz. Başka bir soru sanırım cevabı biliyorsun. @Secure yöntemi benim için çalışmadı. ApplicationContext-security.xml dosyasına etiketini ekledim ve denetleyicideki yöntemin yukarısındaki bağımlılığı karşılamak için pom.xml dosyasını değiştirdim, ekledim @Secured ("ROLE_ADMIN") ama herkesin bu yönteme nasıl erişebileceği önemli değil, yanlış bir şey var mı? @Secured ("ROLE_ADMIN") @RequestMapping (value = "abc", method = RequestMethod.GET, üretir = "text/html") public String oluşturma() { return Users.getString(); // myCreate (); } – JerryCai

+0

@JerryCai Belki de yeni bir soru açmalısın. Yorumlarda kodu okumak zordur ve eğer SO üzerinde ayrı bir soru olarak bulabilirlerse, aynı problemle başkalarına yardımcı olacaktır. –

+0

Tamam, yapacağım teşekkürler. – JerryCai

6

Bu davranış, "request-matcher" kullanımda tanımlanmıştır. Belgelerin belirttiği gibi, varsayılan "karınca", bir AntPathRequestMatcher kullanımını belirtir ve bir alternatif "regex" dir, RegexRequestMatcher. Javadocs (bağlı), bir isteklerin "servletPath + pathInfo" ile karşılaştırması ve ikincisinin "servletPath + pathInfo + queryString" e karşı olması da dahil olmak üzere, eşleştiriciler hakkında ayrıntılı bilgi verir.

+0

Tim ne dedi: yeni bir soru başlatın. Bir yoruma soru sormaya çalışma. –

+0

Tamam, yapacağım teşekkürler. – JerryCai