ssm框架下的权限管理

1.项目准备

本次博客建立在上篇博客的基础上。
博客地址:https://blog.csdn.net/LISHUAICSDN/article/details/94465880
项目所需的基础代码:
链接:https://pan.baidu.com/s/1ecaMVHYJY_8_P7QaYoe1mg
提取码:ib9m
项目素材包:
链接:https://pan.baidu.com/s/176ezsX3WEfXFYvbTNDvG3w
提取码:awfw

2.配置过程

2.1 修改pom.xml文件

代码在素材包中。
在这里插入图片描述
在这里插入图片描述

2.2 配置web.xml文件

在这里插入图片描述
代码:

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

2.3 导入spring-security.xml文件并在web.xml中配置。

在这里插入图片描述

2.4 将素材中jspheader.txt内代码粘贴到aside.jsp和header.jsp中。

在这里插入图片描述
在这里插入图片描述

3.开发过程

3.1 bean包下建立Role类,实现Role类

实现过程前面的文章已经讲到许多次:
在这里插入图片描述
代码:

package com.zhongruan.bean;

public class Role {
    private int id;
    private String roleName;
    private String roleDesc;

    public int getId() { return id; }

    public void setId(int id) { this.id = id; }

    public String getRoleName() { return roleName; }

    public void setRoleName(String roleName) { this.roleName = roleName; }

    public String getRoleDesc() { return roleDesc; }

    public void setRoleDesc(String roleDesc) { this.roleDesc = roleDesc; }

    @Override
    public String toString() {
        return "Role{" +
                "id=" + id +
                ", roleName='" + roleName + '\'' +
                ", roleDesc='" + roleDesc + '\'' +
                '}';
    }
}

3.2 修改UserInfo类

在这里插入图片描述

3.3 在IUserDao接口中添加函数

 public UserInfo selectByUsername(String username);

3.4 在dao包中建立接口IRoleDao

在这里插入图片描述

package com.zhongruan.dao;

import com.zhongruan.bean.Role;

import java.util.List;

public interface IRoleDao {
public List<Role> findRoleByUserId(int userId);
}

3.5 在userMapper.xml中实现selectByUsername();

在这里插入图片描述

<select id="selectByUsername" resultType="com.zhongruan.bean.UserInfo" parameterType="UserInfo">
   select* from userinfo where username = #{username}
</select>

3.6 在mapper包中新建RoleMapper.xml

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.zhongruan.dao.IRoleDao" >
    <!-- 接口实现类 -->

    <select id="findRoleByUserId" parameterType="int" resultType="com.zhongruan.bean.Role">
    select * from role where id in (select roleId from users_role where userId=#{userId})
</select>
</mapper>

3.7 更改IUserService中代码

在这里插入图片描述

3.8 在UserService添加代码

在这里插入图片描述

@Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
            UserInfo userInfo= userDao.selectByUsername(username);
            List<Role> roles=roleDao.findRoleByUserId(userInfo.getId()) ;
            User user=new User(userInfo.getUsername(),"{noop}"+userInfo.getPassword(),getauthories(roles));
        return user;
    }
    private Collection<? extends GrantedAuthority> getauthories(List<Role> roles) {
        List<SimpleGrantedAuthority> list =new ArrayList<>();
        for (Role role:roles)
        {
            list.add(new SimpleGrantedAuthority("ROLE_"+ role.getRoleName()));
        }
        return list;
    }

3.9 屏蔽UserController中上次写的登陆代码。

在这里插入图片描述

4 更改jsp页面的代码

4.1 login.jsp

在这里插入图片描述

4.2 aside.jsp页面

 <security:authentication property="principal.username"></security:authentication>

在这里插入图片描述
在这里插入图片描述

4.3 header.jsp页面

在这里插入图片描述

5 数据库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6 项目文件

链接:https://pan.baidu.com/s/1e55IyTs8sJrncGrPqgZbyA
提取码:j5kg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值