栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringSecurity在maven项目中的应用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringSecurity在maven项目中的应用

1.导入坐标

    org.springframework.security
    spring-security-web

5.0.5.RELEASE

    org.springframework.security
    spring-security-config

5.0.5.RELEASE

    org.springframework.security
    spring-security-taglibs

5.0.5.RELEASE
2.在web.xml中配置spring提供的用于整合第三方框架的DelegatingFilterProxy,整合Spring Security。

    
    springSecurityFilterChain
    org.springframework.web.filter.DelegatingFilterProxy


    springSecurityFilterChain
    /*
3.编写spring-security.xml   


    
    
    
    
    
    
    
    
    


    
    

        
        
            
        

        
        
        
        

        
        
        
        
        
        
    

    
    
        
        
            
            
        
    

    
    
    
    
    
4.编写springSecurityUserService接口,实现UserDetailsService,

不用编写controller,由框架完成,username为框架获取前台输入的用户名

 

@Component
public class SpringSecurityUserService implements UserDetailsService {
    @Autowired
    private StaffInfoService staffInfoService;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        //根据用户名获取用户对象
        StaffInfoDTO user = staffInfoService.findByUsername(username);
        //用户为空时返回null
        if (user == null) {
            return null;
        }
        //创建一个用于存储角色和密码的list授权集合
        List list = new ArrayList<>();
        //根据用户得到角色集合
        Set roles = user.getRoles();
        //遍历角色集合得到每一个角色
        for (Role role : roles) {
            //将每个角色的关键字加入授权集合中
            list.add(new SimpleGrantedAuthority(role.getKeyword()));
        }
        //将参数交给spring的User对象中
        org.springframework.security.core.userdetails.User securityUser =
                new org.springframework.security.core.userdetails.User(username, "{noop}" + user.getPassword(), list);
        return securityUser;
    }
}

//Tips:{noop}表示密码明文显示,一般用于在数据库中是明文保存的密码,没尽兴任何加密.

这时spring-security中的配置文件也要修改,删去加密配置

以上配置的是用户用由不同角色,可以访问的页面不同.需要建立用户表user和角色表role,并建立中间关系表,user_role>另外user.java要建立与角色对象role.java的对应关系,

private Set roles;//角色集合

对于配置不同权限的用户访问不同方法的需求如下:

@PreAuthorize("hasAnyAuthority('add')")

需要在数据库中建立权限表permission,配置角色拥有那些权限,然后再方法上加上改注释即可.

需要在role.java中建立与role的对应关系

private Set permissions;//权限集合

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947183.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号