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

苏州市吴中区住房和城乡建设局官方网站网站空间购买官方

苏州市吴中区住房和城乡建设局官方网站,网站空间购买官方,口碑最好的网站建设,做网站学完html目录 一、项目简介 二、设置静态资源访问路径 三、实现登录功能 四、拦截访问请求 本篇文章以黑马瑞吉外卖为例 一、项目简介 瑞吉外卖项目分为后台和前台系统,后台提供给管理人员使用,前台则是用户订餐使用 资源我们放在resources下 二、设置静态…

目录

一、项目简介

二、设置静态资源访问路径

三、实现登录功能

四、拦截访问请求


本篇文章以黑马瑞吉外卖为例

一、项目简介

瑞吉外卖项目分为后台和前台系统,后台提供给管理人员使用,前台则是用户订餐使用

资源我们放在resources下

二、设置静态资源访问路径

我们的资源放在resources下,当我们访问localhost:8080/backend/page/login/login.html后台登录时发现无法访问,因为springboot只要静态资源放在类路径下: called /static (or /public or /resources or /META-INF/resources

才能访问,所以我们需要自定义一下资源的访问路径

我们可以通过重写 WebMvcConfigurationSupport 的 addResourceHandlers 设置静态资源访问路径, 代码如下:

@Configuration
@Slf4j
public class WebMvcConfig extends WebMvcConfigurationSupport {/** 设置静态资源映射*/@Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {log.info("开始进行静态资源映射...");registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/");registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/");}
}

 于是就能访问了

三、实现登录功能

通过网页检查->console 可以知道登录页面会向 employee/login 发送请求,所以我们写一个controller,实现对应的方法处理请求。对于登录请求的思路大致如下:

  1. 因为数据库的密码使用md5加密,所以需要先对密码进行md5加密
  2. 将提交的用户名查询数据库是否有对应的用户,无则提示登陆失败
  3. 将查出的用户密码进行比对,不同则则提示登陆失败
  4. 将用户id放入session域中供后面使用
@RestController
@Slf4j
@RequestMapping("/employee")
public class EmployeeController {@Autowiredprivate EmployeeService employeeService;@PostMapping("/login")public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee)             {//1.将页面提交的密码password进行md5加密String password = employee.getPassword();password = DigestUtils.md5DigestAsHex(password.getBytes());//2.根据页面提交的用户名查询数据库LambdaQueryWrapper<Employee> wrapper = new LambdaQueryWrapper<>();wrapper.eq(Employee::getUsername, employee.getUsername());Employee user = employeeService.getOne(wrapper);//3.找不到用户或者密码比对失败或者账户被禁用返回错误消息if(user == null || !user.getPassword().equals(password)) {return R.error("登录失败");}if(user.getStatus() == 0) {return R.error("账户已禁用");}//4.登陆成功,将用户Id放入session域request.getSession().setAttribute("employee", user.getId());return R.success(user);}
}

 登录成功

 这里我们还要实现一下登出功能,在右上角点击可以登录,我们只需要写一个对应的方法即可,需要清楚session域中的用户id,返回退出成功的信息。

    /** 员工退出*/@PostMapping("/logout")public R<String> logout(HttpServletRequest request) {// 清除session中的用户Idrequest.getSession().removeAttribute("employee");return R.success("退出成功");}

四、拦截访问请求

登出后我们发现直接请求员工列表也是可行的,这当然是不合理的,如果没有登陆的请求应该返回登录页面,我们可以通过一个全局过滤器实现请求的拦截,步骤如下:

对于不需要拦截的请求放行,需要的我们查看session域中是否有用户id存在,不存在则跳转回登陆页面

由于前端响应拦截器使用的是json形式,所以我们需要返回 json 形式的对应字符串

@WebFilter(filterName = "loginCheckFilter", urlPatterns = "/*")
@Slf4j
public class LoginCheckFilter implements Filter {// 路径匹配器,支持通配符public static final AntPathMatcher PATH_MATCHER = new AntPathMatcher();@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse)servletResponse;// 1.获取请求的URIString requestURI = request.getRequestURI();String[] urls = new String[]{"/employee/login","/employee/logout","/backend/**","/front/**"};// 2.判断访问的URI需不需要登录才可访问log.info("拦截到请求{}", requestURI);if(check(urls, requestURI)) {log.info("本次请求{}不需要处理", requestURI);filterChain.doFilter(request, response);return;}// 3.已经登录无需处理直接放行if(request.getSession().getAttribute("employee") != null) {log.info("用户已登录,id为{}" + request.getSession().getAttribute("employee"));filterChain.doFilter(request, response);return;}// 4. 如果未登录返回未登录结果,通过输出流的方式向客户端返回响应数据log.info("用户未登录");response.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN")));return;}/** 路径匹配,判断是否需要放行*/public boolean check(String[] urls, String url) {for(String item : urls) {if(PATH_MATCHER.match(item, url)) {return true;}}return false;}
}

http://www.yayakq.cn/news/526768/

相关文章:

  • 彩票网站开发公司建筑人才网一砖一瓦
  • 建设企业网站是静态还是动态好ui设计和网站建设人员李伟宁
  • 百色建设厅网站岱山县建设局网站
  • 塘沽网站制作公司怎样做网络推广方案服务
  • 网站制作计算机手机自建网站平台
  • 静态网站做淘宝客做印刷广告的图片在哪个网站找
  • 怎样做彩票网站公司网站自己可以学习优化吗
  • 建设网站的网站叫什么男怎么提交网址让百度收录
  • 河源建设局网站动漫做暧昧视频网站
  • 苏州建站公司哪个济南兴田德润实惠吗企业服务类型有哪些
  • 盗版视频网站怎么做的消息网站怎么做
  • 百度云架设网站如何将网站上传到万网主机
  • 厦门服装企业网站推广专业做网站app的公司
  • 攀枝花城市建设网站西安市建网站
  • 做网站最好网站建设的业务流程图
  • 成都专业网站制作建设教你如何建设网站阿里去
  • 响应式网站视频新闻聚合网站怎么做
  • 石家庄网站建设王道下拉棒龙岗网站设计案例
  • 投资理财网站建设创建国际网站
  • 河南网站建设运营域名注册公司网站建设期间工作总结
  • 做网站时怎么更改区域内的图片北京做网站youyi51
  • 网站备案时间周期一般多久网络营销公司
  • 如何做网站的链接结构网站宣传策划方案
  • 做外贸仿牌网站沈阳php网站
  • 重庆中小企业网站建设公司济南seo整站优化厂家
  • 海南那个网站可以做车年检网站建设价格明细
  • 做教育的需要做个网站吗品牌营销全案策划
  • 怎样做国外网站江苏网站开发
  • 国外网站seo江苏省建设考试培训网网站
  • 那个网站做视频没有水印教育培训机构营销方案