当前位置: 首页 > news >正文

北京做招聘网站的公司一个人看的片免费高清大全

北京做招聘网站的公司,一个人看的片免费高清大全,三明网站设计,购物网站排名前100五、权限管理 5.1 引入JWT JWT是JSON Web Token的缩写#xff0c;即JSON Web令牌#xff0c;是一种自包含令牌。 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。 JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息#xff0c;以…五、权限管理 5.1 引入JWT JWT是JSON Web Token的缩写即JSON Web令牌是一种自包含令牌。 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。 JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息以便于从资源服务器获取资源。比如用在用户登录上。 JWT最重要的作用就是对 token信息的防伪作用。 在common-util模块中引入依赖 dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactId/dependency创建工具类用于生成token和根据token获取用户名和用户id。 package pers.beiluo.yunshangoffice.common.jwt;import io.jsonwebtoken.*; import org.springframework.util.StringUtils;import java.util.Date;/*** 此类用于完成与token相关的功能* 例如生成token或解析token等*/ public class JWTHelper {//token失效时间private static long tokenExpiration 365*24*60*60*1000;//签名根据签名进行加密private static String tokenSignKey adcde;//创建tokenpublic static String createToken(Long userId,String username){return Jwts//创建JWT实例.builder()//设置类别表示这个Jwt面向的用户.setSubject(AUTH-USER)//设置token的失效时间.setExpiration(new Date(System.currentTimeMillis()tokenExpiration))//向claims属性中存值.claim(userId,userId).claim(username,username)//使用signkey进行签名.signWith(SignatureAlgorithm.HS512,tokenSignKey)//设置压缩方法.compressWith(CompressionCodecs.GZIP)//返回完整的JWT.compact();}//获取用户idpublic static Long getUserId(String token){try {if(StringUtils.isEmpty(token)){return null;}JwsClaims claimsJws Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);Claims body claimsJws.getBody();//通过claim获取用户idreturn ((Integer)body.get(userId)).longValue();} catch (Exception e) {e.printStackTrace();return null;}}//获取用户名称public static String getUsername(String token){try {if(StringUtils.isEmpty(token)){return null;}JwsClaims claimsJws Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);Claims body claimsJws.getBody();return (String)body.get(username);} catch (Exception e) {e.printStackTrace();return null;}}}5.2 用户登录 首先创建一个前后端数据交互的类 ApiModel(登录信息类) Data public class LoginVo {//用户名ApiModelProperty(用户名)private String username;//用户密码ApiModelProperty(密码)private String password;}创建MD5密码加密工具类 package pers.beiluo.yunshangoffice.common.jwt;import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;public final class MD5 {public static String encrypt(String strSrc) {try {char hexChars[] { 0, 1, 2, 3, 4, 5, 6, 7, 8,9, a, b, c, d, e, f };byte[] bytes strSrc.getBytes();MessageDigest md MessageDigest.getInstance(MD5);md.update(bytes);bytes md.digest();int j bytes.length;char[] chars new char[j * 2];int k 0;for (int i 0; i bytes.length; i) {byte b bytes[i];chars[k] hexChars[b 4 0xf];chars[k] hexChars[b 0xf];}return new String(chars);} catch (NoSuchAlgorithmException e) {e.printStackTrace();throw new RuntimeException(MD5加密出错 e);}}public static void main(String[] args) {System.out.println(MD5.encrypt(111111));} }修改IndexController中的方法 ApiOperation(登录)PostMapping(/login)public Result login(RequestBody LoginVo loginVo){//根据用户名查询数据库LambdaQueryWrapperSysUser sysUserLambdaQueryWrapper new LambdaQueryWrapper();sysUserLambdaQueryWrapper.eq(SysUser::getUsername,loginVo.getUsername());SysUser one sysUserService.getOne(sysUserLambdaQueryWrapper);//判断该用户是否存在if(null one){throw new CustomizedException(201,用户尚未注册);}//判断密码是否正确if(!one.getPassword().equals(MD5.encrypt(loginVo.getPassword()))){throw new CustomizedException(201,用户名或密码错误);}//判断用户是否有效if(one.getStatus().intValue() 0){throw new CustomizedException(201,用户已被禁用);}//走到这里说明用户验证成功返回tokenHashMapString, Object stringObjectHashMap new HashMap();stringObjectHashMap.put(token, JWTHelper.createToken(one.getId(),one.getUsername()));return Result.ok(stringObjectHashMap);}5.3 返回用户信息 //IndexControllerApiOperation(获取用户信息)GetMapping(/info)public Result getInfo(HttpServletRequest request){//首先获取tokenString token request.getHeader(token);//根据token获取用户idLong userId 1L;//JWTHelper.getUserId(token);//获取用户信息LambdaQueryWrapperSysUser sysUserLambdaQueryWrapper new LambdaQueryWrapper();sysUserLambdaQueryWrapper.eq(SysUser::getId,userId);SysUser one sysUserService.getOne(sysUserLambdaQueryWrapper);//获取用户角色信息MapString, Object roleOfUserById sysUserService.getRoleOfUserById(userId);ArrayListSysRole assignedRole (ArrayListSysRole) roleOfUserById.get(assignedRole);ListString collect assignedRole.stream().map(item - item.getRoleName()).collect(Collectors.toList());//根据用户id获取菜单信息ListRouterVo menuList sysMenuService.getUserRouterList(userId);//根据用户id获取按钮权限信息ListString permissionList sysMenuService.getUserPermissionList(userId);//创建返回对象HashMapString, Object stringObjectHashMap new HashMap();stringObjectHashMap.put(name,one.getName());stringObjectHashMap.put(avatar,https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif);stringObjectHashMap.put(roles,collect);stringObjectHashMap.put(buttons,permissionList);stringObjectHashMap.put(routers,menuList);return Result.ok(stringObjectHashMap);}//SysMenuServiceImpl.getUserRouterList/*** 根据用户id获取菜单的路由结构* param userId* return*/Overridepublic ListRouterVo getUserRouterList(Long userId) {ListSysMenu sysMenus null;//判断是否为管理员如果为管理员则直接返回所有菜单假设用户id为1的是管理员其余都为普通用户if(userId.longValue() 1){LambdaQueryWrapperSysMenu sysMenuLambdaQueryWrapper new LambdaQueryWrapper();sysMenuLambdaQueryWrapper.eq(SysMenu::getStatus,1);//按照sort_value进行排序sysMenuLambdaQueryWrapper.orderByAsc(SysMenu::getSortValue);sysMenus baseMapper.selectList(sysMenuLambdaQueryWrapper);}else{sysMenus baseMapper.selectUserMenuList(userId);}//将用户拥有菜单转换成树形ListSysMenu sysMenus1 MyUtils.buildMenu(sysMenus);//创建返回对象将树形菜单转换成路由形式ArrayListRouterVo routerVos MyUtils.buildRouter(sysMenus1);return routerVos;}//SysMenuServiceImpl/*** 根据用户id查询用户拥有的按钮权限* param userId* return*/Overridepublic ListString getUserPermissionList(Long userId) {ListSysMenu sysMenus new ArrayList();//如果用户为管理员则查询所有菜单if(userId.longValue() 1){LambdaQueryWrapperSysMenu sysMenuLambdaQueryWrapper new LambdaQueryWrapper();sysMenuLambdaQueryWrapper.eq(SysMenu::getStatus,1);sysMenus baseMapper.selectList(sysMenuLambdaQueryWrapper);}else{sysMenus baseMapper.selectUserMenuList(userId);}//从菜单列表中获取可以操作的按钮权限ListString collect sysMenus.stream().filter(ele - ele.getType() 2).map(ele - ele.getPerms()).collect(Collectors.toList());return collect;}!--SysMenuMapper.selectUserMenuList这个方法涉及多表联查所以需要在xml文件中定义-- mapper namespacepers.beiluo.yunshangoffice.mapper.SysMenuMapper!--映射关系在实体类中可以使用TableField注解指定表字段与类字段的映射关系在这里就可以开启自动映射如果开启了驼峰命名并且是按照规范命名的那么就不需要使用TableFiled注解也不需要resultMap标签--resultMap iduserMenuMap typepers.beiluo.yunshangoffice.model.system.SysMenu autoMappingtrue/resultMap!--抽取列名--sql idcolumnssm.id,sm.parent_id,sm.name,sm.type,sm.path,sm.component,sm.perms,sm.icon,sm.sort_value,sm.status,sm.create_time,sm.update_time,sm.is_deleted/sqlselect idselectUserMenuList resultMapuserMenuMapSELECT DISTINCT include refidcolumns /FROM sys_role_menu srm INNER JOINsys_menu sm ON srm.menu_idsm.idINNER JOIN sys_user_role sur ONsrm.role_idsur.role_idWHERE sur.user_id#{userId}AND sm.status1AND srm.is_deleted0AND sm.is_deleted0AND srm.is_deleted0/select/mapper
http://www.pierceye.com/news/346584/

相关文章:

  • 网站建设需要哪些准备wordpress调用单页面跳转
  • 小公司使用的网站开发电子商务毕业设计 网站建设
  • 简单的个人网站模板网站建设费记什么科目
  • 中国建设银行宁波分行网站一般网站空间要多大
  • 做简单视频网站自己看廊坊专门做网站
  • 做贸易网站科技型中小企业服务平台登录
  • 网站怎么接广告赚钱net创建网站之后怎么做
  • 做网站如何让盈利wordpress链接样式表
  • 网站建设与管理计划谷歌浏览器官网下载手机版
  • 做请帖的网站上海阳性增多
  • 有回定ip怎么做网站青岛建设集团招聘信息网站
  • 淘宝内部卷网站怎么做智慧团建网站登录忘记密码
  • 网站建设前十名建站系统cms
  • 第三方网站开发的商家厦门广告公司网站建设
  • 网站建设基础条件临猗网站制作
  • 建设博客网站步骤常州网站建设百科
  • 门户网站 管理系统wordpress 微信图标
  • 广元网站建设广元莱芜论坛二手车
  • 山东省建设工程质量监督网站广州软件合作中心
  • 郑州网站建设怎么样通州建设局网站
  • 免费网站建设福州怎么修改网站主页
  • 深圳企业建站设计公司wordpress不显示样式
  • 外贸网站商城广东省建设协会网站
  • 杭州制作企业公司网站wordpress数据库添加用户
  • 主域名进入网站广告标识标牌制作厂家
  • 网站建设基础流程摘要专题网站建设策划
  • 滁州网站建设电话网站建设与网站优化
  • 慈溪做网站公司哪家好淘宝商城的网站建设
  • 安徽建设厅网站怎么打不开太原网络搭建
  • idea 网站开发最好的免费推广平台