@IgnoreAuth @PostMapping(value = "/login") public R login(String username, String password, String captcha, HttpServletRequest request) { UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username)); if(user==null || !user.getPassword().equals(password)) { return R.error("账号或密码不正确"); } String token = tokenService.generateToken(user.getId(),username, "users", user.getRole()); return R.ok().put("token", token); }@Overridepublic String generateToken(Long userid,String username, String tableName, String role) {TokenEntity tokenEntity = this.selectOne(new EntityWrapper<TokenEntity>().eq("userid", userid).eq("role", role));String token = CommonUtil.getRandomString(32);Calendar cal = Calendar.getInstance();cal.setTime(new Date());cal.add(Calendar.HOUR_OF_DAY, 1);if(tokenEntity!=null) {tokenEntity.setToken(token);tokenEntity.setExpiratedtime(cal.getTime());this.updateById(tokenEntity);} else {this.insert(new TokenEntity(userid,username, tableName, role, token, cal.getTime()));}return token;} /** * 权限(Token)验证 */ @Component public class AuthorizationInterceptor implements HandlerInterceptor { public static final String LOGIN_TOKEN_KEY = "Token"; @Autowired private TokenService tokenService;@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//支持跨域请求 response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Credentials", "true"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization"); response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));// 跨域时会首先发送一个OPTIONS请求,这里我们给OPTIONS请求直接返回正常状态if (request.getMethod().equals(RequestMethod.OPTIONS.name())) {response.setStatus(HttpStatus.OK.value()); return false; } IgnoreAuth annotation; if (handler instanceof HandlerMethod) { annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class); } else { return true; } //从header中获取token String token = request.getHeader(LOGIN_TOKEN_KEY); /** * 不需要验证权限的方法直接放过 */ if(annotation!=null) {return true; } TokenEntity tokenEntity = null; if(StringUtils.isNotBlank(token)) {tokenEntity = tokenService.getTokenEntity(token); } if(tokenEntity != null) {request.getSession().setAttribute("userId", tokenEntity.getUserid());request.getSession().setAttribute("role", tokenEntity.getRole());request.getSession().setAttribute("tableName", tokenEntity.getTablename());request.getSession().setAttribute("username", tokenEntity.getUsername());return true; }PrintWriter writer = null;response.setCharacterEncoding("UTF-8");response.setContentType("application/json; charset=utf-8");try { writer = response.getWriter(); writer.print(JSONObject.toJSONString(R.error(401, "请先登录")));} finally { if(writer != null){ writer.close(); }} //throw new EIException("请先登录", 401);return false; } }1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.97.98.99.100.101.
相关知识
基于微信小程序宠物交易商城系统设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的宠物领养平台小程序设计与实现(源码+lw+部署+讲解)
基于微信小程序的宠物寄养平台(附源码,部署教程)
基于php宠物爱好者交流平台管理系统设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的宠物寄养小程序,附源码
基于数据可视化+SpringBoot+Vue的宠物用品在线咨询平台的设计与实现(源码+文档+部署讲解等)
springboot+html宠物医院系统设计与实现(源码+lw+部署文档+讲解等)
基于Java开发的宠物管理系统的设计与实现(源码+文档+部署讲解等)
【开题报告+文档+源码】基于小程序开发的宠物寄养平台管理系统
基于微信小程序的宠物用品商城设计与实现(源码+lw+部署文档+讲解等)
网址: 基于微信小程序的宠物寄养平台小程序设计与实现(源码+lw+部署文档+讲解等) https://m.mcbbbk.com/newsview605650.html
上一篇: 宠拉达宠物版网约车平台,为宠物提 |
下一篇: 济南美腾机械设备有限公司 |