2017-06-29 1 views
0

Ich benutze Federsicherheit für meine Crud-Anwendung. Nach dem Einloggen muss die Mitarbeiterliste angezeigt werden. wenn ich in dieser Seite eine Operation durchführen müssen, ist es Umleitung zur Login-Seite auch nach angemeldet.Auch nach der Anmeldung leitet jede URL zur Anmeldeseite (Federsicherheit) um.

Das ist mein Controller

@RequestMapping(value="/login") 
    public String log(Model model){ 
     model.addAttribute("user", new User()); 
     return "login"; 
    } 

    @RequestMapping(value="/loginUser",method=RequestMethod.POST) 
    public String login(@ModelAttribute("user") User user,Model model){ 

     try{ 
     userService.login(user); 
     model.addAttribute("employee", new Employee()); 
     model.addAttribute("user", getPrincipal()); 
     return "redirect:/employees"; 
     }catch(Exception e){ 
      return "redirect:/accessDenied"; 
     } 
    } 

    @RequestMapping(value = "/employees", method = RequestMethod.GET) 
    public String listEmployee(Model model) { 
     model.addAttribute("employee", new Employee()); 
     model.addAttribute("user", getPrincipal()); 
     model.addAttribute("listEmployee", employeeService.listEmployee()); 
     return "employee"; 
    } 

    @RequestMapping(value= "/employee/add", method = RequestMethod.POST) 
    public String addEmployee(@ModelAttribute("employee") Employee emp,Model model){ 

     this.employeeService.addEditEmployee(emp); 
     model.addAttribute("user", getPrincipal()); 
     return "redirect:/"; 

    } 

    @RequestMapping("/delete/{id}") 
    public String removeEmployee(@PathVariable("id") int id,Model model){ 

     this.employeeService.deleteEmployee(id); 
     model.addAttribute("user", getPrincipal()); 
     return "redirect:/employees"; 
    } 

    @RequestMapping("/edit/{id}") 
    public String editEmployee(@PathVariable("id") int id, Model model){ 
     model.addAttribute("employee", employeeService.getEmployeeById(id)); 
     model.addAttribute("listEmployees",employeeService.listEmployee()); 
     model.addAttribute("user", getPrincipal()); 
     return "employee"; 
    } 

das ist meine Feder Sicherheitskonfigurationsdatei

<security:global-method-security secured-annotations="enabled"/> 
    <security:http auto-config="true" use-expressions="true"> 
     <security:intercept-url pattern="/" access="hasRole('ADMIN')"/> 
     <!-- <security:intercept-url pattern="/employees" access="hasRole('ADMIN')"/> --> 
     <security:form-login login-page="/login" login-processing-url="/login" 
          default-target-url="/employees" 
          authentication-failure-url="/login" /> 
    </security:http> 
    <security:authentication-manager > 
     <security:authentication-provider> 
      <security:jdbc-user-service authorities-by-username-query="" 
             users-by-username-query="select userName,password from user where userName=? AND password=?" 
             data-source-ref="dataSource"/> 
     </security:authentication-provider> 
    </security:authentication-manager> 

Hier, was ich brauche, ist, wenn ich mich einmal anmelde, sollte ich alle Operationen ausführen. Ich brauche Sitzung zu erinnern, dass ich angemeldet war

+0

Sie arbeiten an Spring Security, anstatt Spring Security zu verwenden. Lassen Sie Spring Security den Login-Prozess verwalten, anstatt Ihren eigenen zu schreiben. –

+0

Was macht Ihr 'userService.login (user)? –

+0

öffentliche Benutzeranmeldung (Benutzer Benutzer) { \t \t user = (Benutzer) session.getCurrentSession(). CreateCriteria (User.class) \t \t \t \t .add (Restrictions.eq ("username", user.getUserName())) \t \t \t \t .add (Restrictions.eq ("Passwort", user.getPassword())) \t \t \t \t .uniqueResult(); \t \t Benutzer zurückgeben; –

Antwort

2

bitte, dies zu versuchen. <security:intercept-url pattern="/**" access="hasRole('ADMIN')"/>

, warum Sie die Login-Post auf dem Controller sind Handling ?! Warum verwenden Sie keine Spring Security für den Login?

Verwandte Themen