2017-02-28 7 views
0

Ich habe zwei Rollen in meiner Anwendung, eine Rolle ist für Gäste Daten anzuzeigen und die andere Rolle ist admin.In Admin-Seite kann Admin Daten bearbeiten und in der Ansicht Seite Gastrolle können Daten anzeigen. Wenn ich versuche, auf die URLs zuzugreifen, kann ich beide Seiten sehen und Admin für den Gast und Admin, aber ich möchte wie Gast sollte nicht Admin-Seite zugreifen. Zugriff auf bestimmte URL für bestimmte Benutzer im Frühjahr Sicherheit

Das folgende ist meine Feder Sicherheitsdatei:

<b:beans xmlns="http://www.springframework.org/schema/security" 
     xmlns:b="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
         http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd"> 

    <http auto-config="true" use-expressions="true"> 
     <!-- Adds Support for basic authentication --> 
     <intercept-url pattern="/admin" access="hasAnyRole('ROLE_USER')" /> 
     <!-- <http-basic /> --> 
     <form-login login-page="/login" authentication-failure-url="/loginFailed" default-target-url="/view" /> 
     <logout /> 
    </http> 
    <authentication-manager> 
     <authentication-provider> 
      <user-service> 
       <user name="leader" password="1234" authorities="ROLE_ADMIN" /> 
       <user name="sudheer" password="1234" authorities="ROLE_USER" /> 
      </user-service> 
     </authentication-provider> 
    </authentication-manager> 
</b:beans> 

Und die folgende ist mein Controller-Klasse:

@RequestMapping(value="/admin", method=RequestMethod.GET) 
    public ModelAndView admin(){ 

      ModelAndView model = new ModelAndView(); 

      List<ApplicationTO> list=application.getApplicationList(); 
      model.addObject("applicationList", list); 
      model.setViewName("admin"); 

      return model; 

     } 

    @RequestMapping(value="/view", method=RequestMethod.GET) 
    public ModelAndView view(){ 

      ModelAndView model = new ModelAndView(); 
      List<ApplicationTO> list=application.getApplicationList(); 
      model.addObject("applicationList", list); 
      model.setViewName("view"); 

      return model; 

     } 

Antwort

2

Bitte ändern - <intercept-url pattern="/admin" access="hasAnyRole('ROLE_USER')" /> aus dem Code zu

<intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')" /> 
Verwandte Themen