Spring Security redirect to previous page after successful login

前端 未结 9 1181
孤独总比滥情好
孤独总比滥情好 2020-11-27 10:09

I know this question has been asked before, however I\'m facing a particular issue here.

I use spring security 3.1.3.

I have 3 possible login cases in my web

9条回答
  •  心在旅途
    2020-11-27 10:47

    Back to previous page after succesfull login, we can use following custom authentication manager as follows:

    
        
            
            
            
            
            
            
            
        
    
        
            
        
    
        
        
            
                
                
            
        
    

    CustomUserDetailsService class

    @Service
    public class CustomUserDetailsService implements UserDetailsService {
    
            @Autowired
            private UserService userService;
    
            public UserDetails loadUserByUsername(String userName)
                            throws UsernameNotFoundException {
                    com.codesenior.telif.local.model.User domainUser = userService.getUser(userName);
    
                    boolean enabled = true;
                    boolean accountNonExpired = true;
                    boolean credentialsNonExpired = true;
                    boolean accountNonLocked = true;
    
                    return new User(
                                    domainUser.getUsername(),
                                    domainUser.getPassword(),
                                    enabled,
                                    accountNonExpired,
                                    credentialsNonExpired,
                                    accountNonLocked,
                                    getAuthorities(domainUser.getUserRoleList())
                    );
            }
    
            public Collection getAuthorities(List userRoleList) {
                    return getGrantedAuthorities(getRoles(userRoleList));
            }
    
            public List getRoles(List userRoleList) {
    
                    List roles = new ArrayList();
    
                    for(UserRole userRole:userRoleList){
                            roles.add(userRole.getRole());
                    }
                    return roles;
            }
    
            public static List getGrantedAuthorities(List roles) {
                    List authorities = new ArrayList();
    
                    for (String role : roles) {
                            authorities.add(new SimpleGrantedAuthority(role));
                    }
                    return authorities;
            }
    
    }
    

    User Class

    import com.codesenior.telif.local.model.UserRole;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.security.core.GrantedAuthority;
    import org.springframework.security.core.authority.SimpleGrantedAuthority;
    import org.springframework.security.core.userdetails.User;
    import org.springframework.security.core.userdetails.UserDetails;
    import org.springframework.security.core.userdetails.UserDetailsService;
    import org.springframework.security.core.userdetails.UsernameNotFoundException;
    import org.springframework.stereotype.Service;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.List;
    
    
    @Service
    public class CustomUserDetailsService implements UserDetailsService {
    
            @Autowired
            private UserService userService;
    
            public UserDetails loadUserByUsername(String userName)
                            throws UsernameNotFoundException {
                    com.codesenior.telif.local.model.User domainUser = userService.getUser(userName);
    
                    boolean enabled = true;
                    boolean accountNonExpired = true;
                    boolean credentialsNonExpired = true;
                    boolean accountNonLocked = true;
    
                    return new User(
                                    domainUser.getUsername(),
                                    domainUser.getPassword(),
                                    enabled,
                                    accountNonExpired,
                                    credentialsNonExpired,
                                    accountNonLocked,
                                    getAuthorities(domainUser.getUserRoleList())
                    );
            }
    
            public Collection getAuthorities(List userRoleList) {
                    return getGrantedAuthorities(getRoles(userRoleList));
            }
    
            public List getRoles(List userRoleList) {
    
                    List roles = new ArrayList();
    
                    for(UserRole userRole:userRoleList){
                            roles.add(userRole.getRole());
                    }
                    return roles;
            }
    
            public static List getGrantedAuthorities(List roles) {
                    List authorities = new ArrayList();
    
                    for (String role : roles) {
                            authorities.add(new SimpleGrantedAuthority(role));
                    }
                    return authorities;
            }
    
    }
    

    UserRole Class

    @Entity
    public class UserRole {
            @Id
            @GeneratedValue
            private Integer userRoleId;
    
            private String role;
    
            @ManyToMany(fetch = FetchType.LAZY, mappedBy = "userRoleList")
            @JsonIgnore
            private List userList;
    
            public Integer getUserRoleId() {
                    return userRoleId;
            }
    
            public void setUserRoleId(Integer userRoleId) {
                    this.userRoleId= userRoleId;
            }
    
            public String getRole() {
                    return role;
            }
    
            public void setRole(String role) {
                    this.role= role;
            }
    
            @Override
            public String toString() {
                    return String.valueOf(userRoleId);
            }
    
            public List getUserList() {
                    return userList;
            }
    
            public void setUserList(List userList) {
                    this.userList= userList;
            }
    }
    

提交回复
热议问题