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

深圳招聘网站排行装修设计网站排名

深圳招聘网站排行,装修设计网站排名,网站开发antnw,sem运营在 Web 后端开发中#xff0c;登录认证是保障系统安全和用户数据隐私的关键环节。本文将结合实际开发案例#xff0c;深入探讨登录功能与登录校验的实现思路和技术细节#xff0c;希望能帮助读者更好地掌握这一重要知识点。 一、登录功能实现 1.1 思路分析 登录功能的核心…在 Web 后端开发中登录认证是保障系统安全和用户数据隐私的关键环节。本文将结合实际开发案例深入探讨登录功能与登录校验的实现思路和技术细节希望能帮助读者更好地掌握这一重要知识点。 一、登录功能实现 1.1 思路分析 登录功能的核心在于验证用户输入的用户名和密码是否正确。当用户名和密码都匹配时判定登录成功反之则登录失败。从技术角度看登录功能本质上是依据用户名和密码查询员工信息。例如在 Tlias 智能学习辅助系统中用户输入用户名和密码系统在数据库中查找对应员工记录以此确定登录结果。 1.2 接口设计 请求路径/login请求方式POST请求参数以application/json格式传递包含必填的username用户名字符串类型和password密码字符串类型。请求数据样例 {username: jinyong,password:123456 }响应数据同样采用application/json格式包含必须的code响应码1 表示成功0 表示失败、非必须的msg提示信息字符串类型以及必须的data返回数据对象。data对象包含员工 IDid数字类型、用户名username字符串类型、姓名name字符串类型和令牌token字符串类型。响应数据样例 {code:1,msg:success,data:{id:2,username: songjiang,name:宋江,token: eyJhbGci0iJIUzI1NiJ9.eyJpZCI65hbWUi0iJzb2CJJeHAi0jE20Tg3MDE3NjJ9...} }1.3 代码实现 在 Java 开发中以 Spring Boot 和 MyBatis 框架为例在业务逻辑层实现登录功能 Service public class EmpService {Autowiredprivate EmpMapper empMapper;public LoginInfo login(Emp emp) {// 调用mapper根据用户名密码查询员工信息Emp e empMapper.login(emp.getUsername(), emp.getPassword());// 如果员工存在组装登录成功信息if (e ! null){MapString, Object claims new HashMap();claims.put(id, e.getId());claims.put(username, e.getUsername());return new LoginInfo(e.getId(), e.getUsername(), e.getName(), JwtUtils.generateJwt(claims));}return null;} }上述代码中EmpMapper负责数据库查询操作JwtUtils.generateJwt(claims)用于生成 JWT 令牌。 二、登录校验技术 在测试登录功能时常出现未登录也能访问服务端功能接口的问题。为解决该问题需引入登录校验机制确保只有登录成功的用户才能访问后台系统数据。实现登录校验主要涉及会话技术、JWT 令牌、过滤器Filter和拦截器Interceptor。 2.1 会话技术 会话指用户从打开浏览器访问 Web 服务器资源到断开连接的过程期间包含多次请求和响应。会话跟踪用于识别多次请求是否来自同一浏览器以实现同一会话内多次请求间的数据共享。常见的会话跟踪方案有 Cookie客户端会话跟踪技术利用 HTTP 协议中的Set-Cookie响应头和Cookie请求头传递数据。优点是 HTTP 协议原生支持缺点是移动端 APP 无法使用安全性低用户可禁用且不能跨域。Session服务端会话跟踪技术底层基于 Cookie通过JSESSIONID标识会话。优点是数据存储在服务端相对安全缺点是服务器集群环境下无法直接使用且存在 Cookie 的固有缺点。令牌技术支持 PC 端和移动端能解决集群环境下的认证问题减轻服务器存储压力但需要自行实现。 2.2 JWT 令牌 介绍JSON Web TokenJWT是一种简洁、自包含的格式用于在通信双方以 JSON 数据格式安全传输信息。它由三部分组成 Header头记录令牌类型、签名算法等如{alg:HS256,type:JWT}。Payload (有效载荷携带自定义信息和默认信息如{id:1,username:Tom}。Signature (签名通过将header、payload和指定秘钥利用指定签名算法计算生成用于防止 Token 被篡改确保安全性。 生成 / 解析在 Java 项目中引入jjwt依赖后可借助官方工具类Jwts生成和解析 JWT 令牌。 dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion0.9.1/version /dependency生成令牌示例 Test public void testGenJwt() {MapString, Object claims new HashMap();claims.put(id, 10);claims.put(username, itheima);String jwt Jwts.builder().signWith(SignatureAlgorithm.HS256, SVRIRUlNQQ).addClaims(claims).setExpiration(new Date(System.currentTimeMillis() 12*3600*1000)).compact();System.out.println(jwt); }解析令牌示例 Test public void testParseJwt() throws Exception {String jwtToken eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...;Claims claims Jwts.parser().setSigningKey(SVRIRUlNQQ).parseClaimsJws(jwtToken).getBody();System.out.println(claims); }2.3 过滤器Filter 概念Filter 是 JavaWeb 三大组件之一能拦截对资源的请求实现通用操作如登录校验、统一编码处理等。快速入门 定义 Filter创建类实现Filter接口并重写其init、doFilter和destroy方法。 WebFilter(urlPatterns /*) public class DemoFilter implements Filter {// 初始化方法服务器启动时调用一次public void init(FilterConfig filterConfig) throws ServletException {System.out.println(init ...);}// 拦截到请求时调用可多次调用public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws Exception{System.out.println(拦截到了请求...);chain.doFilter(servletRequest, servletResponse);}// 销毁方法服务器关闭时调用一次public void destroy() {System.out.println(destroy ... );} }配置 Filter在 Filter 类上使用WebFilter注解配置拦截路径在引导类上加ServletComponentScan开启 Servlet 组件支持。 ServletComponentScan SpringBootApplication public class TliasManagementApplication { }令牌校验 Filter 流程获取请求 URL判断是否为登录请求包含login若是则放行否则获取请求头中的令牌判断令牌是否存在若不存在或解析失败则响应 401解析成功则放行。 WebFilter(urlPatterns /*) public class JwtFilter implements Filter {Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {HttpServletRequest httpRequest (HttpServletRequest) request;String requestURI httpRequest.getRequestURI();if (requestURI.contains(login)) {chain.doFilter(request, response);return;}String token httpRequest.getHeader(token);if (token null) {HttpServletResponse httpResponse (HttpServletResponse) response;httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);return;}try {Claims claims Jwts.parser().setSigningKey(SVRIRUlNQQ).parseClaimsJws(token).getBody();chain.doFilter(request, response);} catch (Exception e) {HttpServletResponse httpResponse (HttpServletResponse) response;httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);}}// init和destroy方法省略 }执行流程放行前逻辑 - 放行 - 访问资源 - 放行后逻辑。拦截路径/*表示拦截所有资源/emps/*表示拦截/emps目录下的所有资源。过滤器链一个 Web 应用中可配置多个过滤器形成过滤器链注解配置的 Filter 优先级按类名字符串自然排序。 2.4 拦截器Interceptor 概念拦截器是 Spring 框架提供的动态拦截控制器方法执行的机制可在方法调用前后执行预设代码。快速入门 定义拦截器实现HandlerInterceptor接口重写preHandle目标资源方法执行前执行返回true放行false不放行、postHandle目标资源方法执行后执行和afterCompletion视图渲染完毕后执行方法。 Component public class DemoInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception {return true;}Overridepublic void postHandle(HttpServletRequest req, HttpServletResponse resp, Object handler, ModelAndView mv) throws Exception {System.out.println(preHandle...);}Overridepublic void afterCompletion(HttpServletRequest req, HttpServletResponse resp, Object handler, Exception ex) throws Exception {System.out.println(afterCompletion...);} }注册拦截器定义配置类实现WebMvcConfigurer接口注册拦截器。 Configuration public class WebConfig implements WebMvcConfigurer {Autowiredprivate DemoInterceptor demoInterceptor;Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(demoInterceptor).addPathPatterns(/**);} }令牌校验拦截器与令牌校验 Filter 流程类似获取请求 URL 判断是否为登录请求获取并校验令牌。 Component public class JwtInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String requestURI request.getRequestURI();if (requestURI.contains(login)) {return true;}String token request.getHeader(token);if (token null) {response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);return false;}try {Claims claims Jwts.parser().setSigningKey(SVRIRUlNQQ).parseClaimsJws(token).getBody();return true;} catch (Exception e) {response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);return false;}}// postHandle和afterCompletion方法省略 }拦截路径/*只能拦截一级路径/**能拦截任意级路径。执行流程与过滤器不同拦截器只拦截 Spring 环境中的资源且在控制器方法前后执行不同逻辑。 通过上述登录功能和登录校验技术的详细介绍希望读者对 Web 后端开发中的登录认证机制有更深入的理解和掌握在实际项目中能够灵活运用这些技术构建安全可靠的 Web 应用。
http://www.w-s-a.com/news/682829/

相关文章:

  • 西宁市精神文明建设网站装饰设计甲级资质
  • 做教育行业营销类型的网站徐州做网站多少钱
  • 临沂品牌网站制作企业网站建设搜集资料
  • wordpress注册验证码手机网站优化
  • 往建设厅网站上传东西做衣服的教程网站有哪些
  • 网上商城网站设计免费咨询口腔科医生回答在线
  • 南京网站c建设云世家 s浏览器
  • 如何做镜像别人网站wordpress菜单对齐修改
  • 长春网站建设net企业公示信息查询官网
  • 金鹏建设集团网站可在哪些网站做链接
  • 电子产品网站开发背景网站关键词优化方案
  • 建网站论坛wordpress提交数据库错误
  • 国内网站建设公司开源网站系统
  • 网站开发公司上大连网站建设流程图
  • 银川网站seo宁波网
  • 个人备案网站会影响吗网站添加 备案
  • 网站建设与电子商务的教案关于旅游网站建设的方案
  • 电子商务网站建设设计原则找做网站找那个平台做
  • 天津高端品牌网站建设韶关网站建设墨子
  • Wordpress多站点为什么注册不了2008iis搭建网站
  • 天津高端网站制作建网站的公司服务
  • 温州网站推广优化类似淘宝的网站怎么做的
  • 网站建设实训考试什么网站做玩具的比较多
  • 上海网站建设特点怎样给公司做一个网站做推广
  • 流量网站怎么做的济南优化排名公司
  • 保定网站制作套餐设计师导航网站大全
  • 惠州 商城网站建设石家庄新闻广播在线收听
  • 洪山网站建设域名购买之后怎么做网站
  • 北京网站建设公司服务哪家好wap是什么意思?
  • 怎么看公司网站做的好不好哦wordpress页面目录下