javaweb开发中实现登陆权限管理

  • 1.数据库中表的结构
  • 2.添加SpringSecurity的依赖包
  • 3.在webapp/WEB-INFO下的web.xml中添加过滤器(Filter)
  • 4.写springsecurity.xml核心配置文件
  • 6.使service层的接口继承类UserDetailsService类,在其实现类userService中重写loadUserByUsername方法
  • 7.改写jsp页面中的内容

1.数据库中表的结构

用户表(userinfo):
javaweb开发中实现登陆权限管理_第1张图片
角色表(role):
javaweb开发中实现登陆权限管理_第2张图片
用户和角色之间的关系(user_role):
javaweb开发中实现登陆权限管理_第3张图片

2.添加SpringSecurity的依赖包

在项目的pom.xml中的properties标签中添加如下代码:

5.0.1.RELEASE

在dependencies标签中添加如下代码:


    org.springframework.security
    spring-security-web
    ${spring.security.version}


    org.springframework.security
    spring-security-config
    ${spring.security.version}


    org.springframework.security
    spring-security-core
    ${spring.security.version}


    org.springframework.security
    spring-security-taglibs
    ${spring.security.version}

3.在webapp/WEB-INFO下的web.xml中添加过滤器(Filter)


  springSecurityFilterChain
  org.springframework.web.filter.DelegatingFilterProxy


  springSecurityFilterChain
  /*

4.写springsecurity.xml核心配置文件

在resources路径下新建springsecurity.xml,在springsecurity.xml中写入如下代码:




    

    
    
    
    
    
    
    
    
        
        

        

        
        

        
        

    

    
    
        
            
        
    

    
    

5.在webapp/WEB-INF下的web.xml里面加载SpringSecurity.xml:


  springSecurityFilterChain
  org.springframework.web.filter.DelegatingFilterProxy

  
    springSecurityFilterChain
    /*
  

6.使service层的接口继承类UserDetailsService类,在其实现类userService中重写loadUserByUsername方法

通过dao层找到相应用户名的用户信息,在通过用户Id找到其所有权限,然后新建User对象(此处的User为org.springframework.security.core.userdetails.User):

public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    UserInfo userInfo = userDao.findByUserName(username);
    if(userInfo != null) {
        List roles = roleDao.findRoleByUserId(userInfo.getId());
        userInfo.setRoles(roles);
        User user = new User(userInfo.getUsername(), "{noop}" + userInfo.getPassword(), getAuthority(roles));
        return user;
    }
    return null;
}

private List getAuthority(List roles) {
    List list = new ArrayList();
    for (Role role : roles) {
        list.add(new SimpleGrantedAuthority("ROLE_" + role.getRoleName()));
    }
    return list;
}

7.改写jsp页面中的内容

1.在登录页面(login.jsp)中修改:原来点击登录按钮时是转到controller中执行,现改为到SpringSecurity.xml中执行,根据上方SpringSecurity.xml中的配置,将login.jsp中的form action路径改为${pageContext.request.contextPath}/login.do。
2.在需要添加权限的页面头部添加如下代码:

<%@taglib prefix="security" uri="http://www.springframework.org/security/tags" %>

3.在设置权限的地方添加权限设置。例如,如果是管理员可以进行用户管理,在点击用户管理的地方添加security:authorize标签:


     用户管理
   

这样普通用户进入页面时即看不见该选项,实现了管理员和普通用户的权限管理。

转载自添加链接描述

你可能感兴趣的:(java,web,开发)