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