2016-06-06 4 views
0

Ich implementierte Frühlingssicherheit in meiner Netzanwendung. Jetzt sind alle meine Dienste gesichert und können nur von autorisierten Benutzern aufgerufen werden. Alles funktioniert auf der Webseite, aber wenn ich Funktion ohne Anmeldung anrufe funktioniert nicht.Spring Security: Wie man Funktionen ohne Anmeldung autorisiert

hier ist mein Controller (RestController)

@RestController 

public class MessageService { 

    @Autowired 
    MessageModel messageModel; 

    @RequestMapping(value="/message",method=RequestMethod.POST) 
    public Message save(@RequestBody Message message) { 
     return messageModel.save(message); 
    } 

    @PreAuthorize("permitAll()") 
    @RequestMapping(value="/messagee",method=RequestMethod.POST) 
    public Message savee(@RequestBody Message message) { 
     System.out.println("hjgjhghggfhgf"); 
     return messageModel.savee(message); 
    } 
} 

Ich bin mit AngularJS Client-Seite.

Antwort

0

Die Funktionen sollen nicht funktionieren, da sie durch Federsicherung gesichert sind. Um den Zugriff auf einige Funktionen anonym zu ermöglichen, müssen Sie die Federsicherheit konfigurieren. Je nachdem, welche Konfiguration Sie verwenden, würde ich die folgenden Tipps: Wenn Sie XML/Java Route basierend Config verwenden, würde ich empfehlen Ihnen, so etwas zu tun:

<security:intercept-url pattern="/trusted/**" filters="none" /> 
<security:intercept-url pattern="/**" access="isFullyAuthenticated()" /> 

Wenn Sie die verwenden @ vorzuauthorisieren Anmerkung, würde ich Ihnen empfehlen, so etwas zu tun:

@PreAuthorize("permitAll()") 
public void YourAnonymousController(){ 
} 

Hoffnung ist das, was Sie suchen.

EDIT 1: Bitte beachten Sie, dass Sie die routenbasierte Sicherheitskonfiguration entfernen. Versuchen Sie, @PreAuthorize ("hasRole()") für Funktionen, die Sie sichern möchten, und @PreAuthorize ("allowAll()") für anonyme Funktionen hinzuzufügen.

+0

danke, ich versuche es, aber es funktioniert nicht, ich bearbeite die Beschreibung des Problems, wenn Sie irgendwelche Ideen haben –

+0

Überprüfen Sie die bearbeitete Antwort. Sie müssen entfernen oder jede Java-basierte Route-Konfiguration. Ich denke, danach sollte es funktionieren – koder23

Verwandte Themen