2016-07-28 9 views
-1

Angenommen, ich eine Feder Anwendung, deren Wünsche werden mit http.authorizeRequests zugelassen() und @PreAuthorizeSpring Security 4 - Get Authorization Mappings

Gibt es eine Möglichkeit diese Zuordnungen programmatisch zu bekommen? Gibt es eine API in Spring, wo ich abrufen kann, welche URLs für den aktuell authentifizierten Benutzer autorisiert sind?

Antwort

0

Ich weiß nicht, ob es gibt bessere Möglichkeiten ähnlich wie wir passieren Request-Header wie @RequestHeader („Content-Type“) ... ich würde lieben, das zu sehen ...

@PreAuthorize("authorizeAccess(#user,#contentType,)") 
public Idea somemethod(@RequestBody User user, @RequestHeader("Content-Type") String contentType) 
{..} 

Aber unten ist definitiv eine Option.

Angenommen, Sie wissen, wie Sie überschreiben schreiben oder schreiben Sie Ihre eigenen Methoden im Frühling Sicherheit (angepasste Klasse SecurityExpressionRoot zu erweitern). Wenn dies der Fall, wenn Sie eine Methode i.e..authorizeAccess

public boolean authorizeAccess(String mapping) 
{ 
    // use mapping to authorize 
    .. do something 
} 

Dann haben, können wir alle URLs in einer konstanten Datei ..

package org.somepackage; 
public interface URLMappings { 
public static String ADMIN = "/admin"; 
} 

dann diese Urls als Konstanten ..

@RequestMapping(value = URLMappings.ADMIN, method = RequestMethod.POST) 
@PreAuthorize("authorizeAccess(T(org.somepackage.URLMappings).ADMIN)")