总共2 页,共14 条数据。 每页
1 2 3 4 5条
- 首页
- 上一页
- 1
- 2
- 3
- 4
- 5
- 下一页
- 尾页
-
Version 1.0.8
Copyright © 2014-2017 <a
href=“http://www.itcast.cn”>研究院研发部.
All rights reserved.
(6)运行测试
用户状态没有显示
修改UserInfo
public String getStatusStr() {
//状态0 表示未开启 1表示开启
if(status == 0){
statusStr = “未开启”;
}else if(status == 1){
statusStr = “开启”;
}
return statusStr;
}
1、创建user-add.jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
数据 - AdminLTE2定制版 <meta content=“width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no”
name=“viewport”>
href=“${pageContext.request.contextPath}/plugins/bootstrap/css/bootstrap.min.css”>
href=“${pageContext.request.contextPath}/plugins/font-awesome/css/font-awesome.min.css”>
href=“${pageContext.request.contextPath}/plugins/ionicons/css/ionicons.min.css”>
href=“${pageContext.request.contextPath}/plugins/iCheck/square/blue.css”>
href=“${pageContext.request.contextPath}/plugins/morris/morris.css”>
href=“${pageContext.request.contextPath}/plugins/jvectormap/jquery-jvectormap-1.2.2.css”>
href=“${pageContext.request.contextPath}/plugins/datepicker/datepicker3.css”>
href=“${pageContext.request.contextPath}/plugins/daterangepicker/daterangepicker.css”>
href=“${pageContext.request.contextPath}/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css”>
href=“${pageContext.request.contextPath}/plugins/datatables/dataTables.bootstrap.css”>
href=“${pageContext.request.contextPath}/plugins/treeTable/jquery.treetable.css”>
href=“${pageContext.request.contextPath}/plugins/treeTable/jquery.treetable.theme.default.css”>
href=“${pageContext.request.contextPath}/plugins/select2/select2.css”>
href=“${pageContext.request.contextPath}/plugins/colorpicker/bootstrap-colorpicker.min.css”>
href=“${pageContext.request.contextPath}/plugins/bootstrap-markdown/css/bootstrap-markdown.min.css”>
href=“${pageContext.request.contextPath}/plugins/adminLTE/css/AdminLTE.css”>
href=“${pageContext.request.contextPath}/plugins/adminLTE/css/skins/_all-skins.min.css”>
href=“${pageContext.request.contextPath}/css/style.css”>
href=“${pageContext.request.contextPath}/plugins/ionslider/ion.rangeSlider.css”>
href=“${pageContext.request.contextPath}/plugins/ionslider/ion.rangeSlider.skinNice.css”>
href=“${pageContext.request.contextPath}/plugins/bootstrap-slider/slider.css”>
href=“${pageContext.request.contextPath}/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.css”>
<jsp:include page=“header.jsp”></jsp:include>
<jsp:include page=“aside.jsp”></jsp:include>
用户管理 用户表单
class=“fa fa-dashboard”> 首页
href=“${pageContext.request.contextPath}/user/findAll.do”>用户管理
- 用户表单
method=“post”>
用户信息用户名称<input type=“text” class=“form-control” name=“username”
placeholder=“用户名称” value=“”>
密码<input type=“password” class=“form-control” name=“password”
placeholder=“密码” value=“”>
邮箱<input type=“text” class=“form-control” name=“email”
placeholder=“邮箱” value=“”>
联系电话<input type=“text” class=“form-control” name=“phoneNum”
placeholder=“联系电话” value=“”>
用户状态<select class=“form-control select2” style=“width: 100%”
name=“status”>
关闭 开启保存
<button type=“button” class=“btn bg-default”
onclick=“history.back(-1);”>返回
Version 1.0.8
Copyright © 2014-2017 <a
href=“http://www.itcast.cn”>研究院研发部.
All rights reserved.
点击新建
2、在UserController当中创建用户添加方法,创建save方法
//用户添加
@RequestMapping(“/save.do”)
public String save(UserInfo userInfo) throws Exception{
userService.save(userInfo);
return “redirect:findAll.do”;
}
3、业务层
(1)IUserService
void save(UserInfo userInfo) throws Exception;
(2)UserServiceImpl
@Override
public void save(UserInfo userInfo) throws Exception {
userDao.save(userInfo);
}
(3)IUserDao
@Insert(“insert into users(email,username,password,phoneNum,status) values (#{email},#{username},#{password},#{phoneNum},#{status})”)
void save(UserInfo userInfo) throws Exception;
(4)配置加密,在UserServiceImpl当中配置
@Autowired
private BCryptPasswordEncoder bCryptPasswordEncoder;
@Override
public void save(UserInfo userInfo) throws Exception {
//对密码进行加密处理
userInfo.setPassword(bCryptPasswordEncoder.encode(userInfo.getPassword()));
userDao.save(userInfo);
}
(5)创建工具类BCryptPassWordEncoderUtils
在zheng_ssm_utils当中的src当中的main的java当中的com.itzheng.ssm.utils当中创建BCryptPassWordEncoderUtils类
package com.itzheng.ssm.utils;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
public class BCryptPasswordEncoderUtils {
private static BCryptPasswordEncoder bCryptPassWordEncoder = new BCryptPasswordEncoder();
public static String encodePassword(String password) {
return bCryptPassWordEncoder.encode(password);
}
public static void main(String[] args) {
String password = “123”;
String rpassword = encodePassword(password);
System.out.println(rpassword);
}
}
如果报错说明没有引入org.springframework.security手动引入
运行测试项目
每次运行项目结果不一样
(6)运行项目添加用户
运行后报错
提示密码的值太大
报错的原因是加密后的字段比较长无法存入到数据库当中
更改数据库当中的password的长度
从新添加一下用户
添加成功
(8)处理用户(在密码加密之后不能登录的问题),因为密码被加密了
修改spring-security.xml文件
security:authentication-manager
<security:authentication-provider user-service-ref=“userService”>
<security:password-encoder ref=“passwordEncoder”/>
</security:authentication-provider>
</security:authentication-manager>
修改UserServiceImpl当中的loadUserByUsername
//处理自己的用户对象封装成UserDetails
// User user=new User(userInfo.getUsername(),“{noop}”+userInfo.getPassword(),getAuthority(userInfo.getRoles()));
User user = new User(userInfo.getUsername(), userInfo.getPassword(), userInfo.getStatus() == 0 ? false : true, true, true, true, getAuthority(userInfo.getRoles()));
登录成功
(9)在数据库当中修改一下Tom的密码
复制工具类生成的密码,设置到数据库当中
并提交
1、在UserController当中创建对应从查询方法
@RequestMapping(“/findById.do”)
public ModelAndView findById(String id)throws Exception{
ModelAndView mv = new ModelAndView();
UserInfo userInfo = userService.findById(id);
return mv;
}
2、业务层IUserService当中创建对应的方法
UserInfo findById(String id) throws Exception;
在UserServiceImpl当中
@Override
public UserInfo findById(String id) throws Exception {
return userDao.findById(id);
}
3、dao当中IUserDao当中创建对应的方法的查询方法
(1)创建IPermissionDao接口
package com.itzheng.ssm.dao;
import com.itzheng.ssm.domain.Permission;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface IPermissionDao {
@Select(“select * from permission where id in (select permissionId from role_permission where roleId = #{id} )”)
public List findPermissionByRoleId(String id) throws Exception;
}
(2) IRoleDao当中的findRoleByUserId
package com.itzheng.ssm.dao;
import com.itzheng.ssm.domain.Role;
import org.apache.ibatis.annotations.Many;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface IRoleDao {
//根据用户id查询出所有对应的角色
@Select(“select * from role where id in (select roleId from users_role where userId=#{userId})”)
@Results({
@Result(id = true, property = “id”, column = “id”),
@Result(property = “roleName”, column = “roleName”),
@Result(property = “roleDesc”, column = “roleDesc”),
@Result(property = “permissions”, column = “id”, javaType = java.util.List.class, many = @Many(select = “com.itzheng.ssm.dao.IPermissionDao.findPermissionByRoleId”))
})
public List findRoleByUserId(String userId) throws Exception;
}
4、完善UserController的findById方法
设置跳转的界面
//查询指定id的用户
@RequestMapping(“/findById.do”)
public ModelAndView findById(String id)throws Exception{
ModelAndView mv = new ModelAndView();
UserInfo userInfo = userService.findById(id);
mv.addObject(“userInfo”,userInfo);
mv.setViewName(“user-show”);
return mv;
}
5、创建user-show.jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8” %>
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
数据 - AdminLTE2定制版 <meta
content=“width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no”
name=“viewport”>
href=“${pageContext.request.contextPath}/plugins/bootstrap/css/bootstrap.min.css”>
href=“${pageContext.request.contextPath}/plugins/font-awesome/css/font-awesome.min.css”>
href=“${pageContext.request.contextPath}/plugins/ionicons/css/ionicons.min.css”>
href=“${pageContext.request.contextPath}/plugins/iCheck/square/blue.css”>
href=“${pageContext.request.contextPath}/plugins/morris/morris.css”>
href=“${pageContext.request.contextPath}/plugins/jvectormap/jquery-jvectormap-1.2.2.css”>
href=“${pageContext.request.contextPath}/plugins/datepicker/datepicker3.css”>
href=“${pageContext.request.contextPath}/plugins/daterangepicker/daterangepicker.css”>
href=“${pageContext.request.contextPath}/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css”>
href=“${pageContext.request.contextPath}/plugins/datatables/dataTables.bootstrap.css”>
href=“${pageContext.request.contextPath}/plugins/treeTable/jquery.treetable.css”>
href=“${pageContext.request.contextPath}/plugins/treeTable/jquery.treetable.theme.default.css”>
href=“${pageContext.request.contextPath}/plugins/select2/select2.css”>
href=“${pageContext.request.contextPath}/plugins/colorpicker/bootstrap-colorpicker.min.css”>
href=“${pageContext.request.contextPath}/plugins/bootstrap-markdown/css/bootstrap-markdown.min.css”>
href=“${pageContext.request.contextPath}/plugins/adminLTE/css/AdminLTE.css”>
href=“${pageContext.request.contextPath}/plugins/adminLTE/css/skins/_all-skins.min.css”>
href=“${pageContext.request.contextPath}/css/style.css”>
href=“${pageContext.request.contextPath}/plugins/ionslider/ion.rangeSlider.css”>
href=“${pageContext.request.contextPath}/plugins/ionslider/ion.rangeSlider.skinNice.css”>
href=“${pageContext.request.contextPath}/plugins/bootstrap-slider/slider.css”>
<jsp:include page=“header.jsp”></jsp:include>
<jsp:include page=“aside.jsp”></jsp:include>
用户管理
全部用户
class=“fa fa-dashboard”> 首页
href=“${pageContext.request.contextPath}/user/findAll.do”>用户管理
- 全部用户
列表
新建
刷新
<input type=“text” class=“form-control input-sm”
placeholder=“搜索”> <span
class=“glyphicon glyphicon-search form-control-feedback”>
class=“table table-bordered table-hover dataTable”>
名称 描述 ${user.username}<c:forEach items=“${user.roles}” var=“role” varStatus=“vs1”>
${role.roleName } ${role.roleDesc }<c:forEach items=“${role.permissions}” var=“permission” varStatus=“vs2”>
data-tt-parent-id=“${vs1.index+1}”>
${permission.permissionName} ${permission.url}</c:forEach>
</c:forEach>
总共2 页,共14 条数据。 每页
1 2 3 4 5条
- 首页
- 上一页
- 1
- 2
- 3
- 4
- 5
- 下一页
- 尾页
-
Version 1.0.8
Copyright © 2014-2017 <a
href=“http://www.itcast.cn”>研究院研发部.
All rights reserved.
6、运行测试
7、没有显示权限信息需要在数据库当中插入一些数据
(1)向permission当中插入数据
insert into permission(permissionname,url) values (‘user findAll’,‘/user/findAll.do’);
insert into permission(permissionname,url) values (‘user findById’,‘/user/findById.do’);
(2)向中间表role_permission当中插入数据
insert into ROLE_PERMISSION(permissionid,roleid) values(‘61DC9373D3364855A98111F6E7D87CC2’,‘1111’);
insert into ROLE_PERMISSION(permissionid,roleid) values(‘C6548DDAF9E841389C591BBD7022E56D’,‘1111’);
insert into ROLE_PERMISSION(permissionid,roleid) values(‘61DC9373D3364855A98111F6E7D87CC2’,‘2222’);
8、再次查询
| | |