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

网站美工设计详细步骤晋江文学城写作网站

网站美工设计详细步骤,晋江文学城写作网站,ts431p 做网站,溧阳网站建设制作目录 Java后端的登录、注册接口是怎么实现的 Java后端的登录接口是怎么实现的 Java后端的注册接口怎么实现#xff1f; 如何防止SQL注入攻击#xff1f; Java后端的登录、注册接口是怎么实现的 Java后端的登录接口是怎么实现的 Java后端的登录接口的实现方式有很多种 如何防止SQL注入攻击 Java后端的登录、注册接口是怎么实现的 Java后端的登录接口是怎么实现的 Java后端的登录接口的实现方式有很多种这里介绍其中一种常见的方式。 Cookie Session 方式用户输入用户名和密码前端将用户提交的用户名和密码发送到后端进行验证。如果验证通过后端会生成一个session id然后将session id 以及其他用户信息存储在服务端的session中。同时后端会将session id 返回给前端前端将session id 存储在cookie中。之后前端每次请求时都会带上cookie后端会根据cookie中的session id 来判断用户是否已经登录如果已经登录则返回用户信息否则返回未登录状态。 Token 方式用户输入用户名和密码前端将用户提交的用户名和密码发送到后端进行验证。如果验证通过后端会生成一个token然后将token 返回给前端。之后前端每次请求时都会带上token后端会根据token来判断用户是否已经登录如果已经登录则返回用户信息否则返回未登录状态。Token 方式相对于 Cookie Session 方式具有更好的可扩展性和更好的跨域支持。 基于spring bootmybatisvue结合 JWT 进行 token 的生成和验证后端代码可以按照以下步骤进行编写 添加依赖在pom.xml文件中添加spring-boot-starter-security和jjwt依赖。 配置Spring Security在Spring Security配置类中添加JWT过滤器用于生成和验证token。 编写登录接口在Controller中编写登录接口接收用户名和密码验证通过后生成token并返回给前端。 编写拦截器在拦截器中验证token的有效性如果token无效则返回错误信息。 编写注销接口在Controller中编写注销接口用于注销当前用户的token。 编写token生成工具类编写一个工具类用于生成和解析token。 编写用户认证逻辑编写用户认证逻辑用于验证用户的身份信息。 使用Spring Boot MyBatis JWT RestController RequestMapping(/api) public class LoginController {Autowiredprivate UserService userService;PostMapping(/login)public ResponseEntity? login(RequestBody User user) {User loginUser userService.login(user);if (loginUser ! null) {String token JWT.create().withAudience(loginUser.getId().toString()).sign(Algorithm.HMAC256(loginUser.getPassword()));return ResponseEntity.ok(token);} else {return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();}} }Configuration EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {Autowiredprivate UserService userService;Overrideprotected void configure(HttpSecurity http) throws Exception {http.csrf().disable().authorizeRequests().antMatchers(/api/login).permitAll().anyRequest().authenticated().and().addFilter(new JWTAuthenticationFilter(authenticationManager())).addFilter(new JWTAuthorizationFilter(authenticationManager(), userService)).sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);}Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.userDetailsService(userService).passwordEncoder(passwordEncoder());}Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}Overridepublic void configure(WebSecurity web) throws Exception {web.ignoring().antMatchers(/swagger-ui.html, /swagger-resources/**, /v2/api-docs, /webjars/**);} }public class JWTAuthenticationFilter extends UsernamePasswordAuthenticationFilter {private AuthenticationManager authenticationManager;public JWTAuthenticationFilter(AuthenticationManager authenticationManager) {this.authenticationManager authenticationManager;setFilterProcessesUrl(/api/login);}Overridepublic Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {try {User user new ObjectMapper().readValue(request.getInputStream(), User.class);return authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPassword()));} catch (IOException e) {throw new RuntimeException(e);}}Overrideprotected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException {User user (User) authResult.getPrincipal();String token JWT.create().withAudience(user.getId().toString()).sign(Algorithm.HMAC256(user.getPassword()));response.addHeader(Authorization, Bearer token);} }public class JWTAuthorizationFilter extends BasicAuthenticationFilter {private UserService userService;public JWTAuthorizationFilter(AuthenticationManager authenticationManager, UserService userService) {super(authenticationManager);this.userService userService;}Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {String header request.getHeader(Authorization);if (header null || !header.startsWith(Bearer )) {chain.doFilter(request, response);return;}UsernamePasswordAuthenticationToken authenticationToken getAuthentication(request);SecurityContextHolder.getContext().setAuthentication(authenticationToken);chain.doFilter(request, response);}private UsernamePasswordAuthenticationToken getAuthentication(HttpServletRequest request) {String token request.getHeader(Authorization);if (token ! null) {String userId JWT.require(Algorithm.HMAC256(userService.getById(Long.parseLong(JWT.decode(token.replace(Bearer , )).getAudience())).getPassword())).build().verify(token.replace(Bearer , )).getAudience().get(0);if (userId ! null) {User user userService.getById(Long.parseLong(userId));return new UsernamePasswordAuthenticationToken(user, null, user.getAuthorities());}return null;}return null;} }Service public class UserServiceImpl implements UserService, UserDetailsService {Autowiredprivate UserMapper userMapper;Overridepublic User login(User user) {User loginUser userMapper.getByUsername(user.getUsername());if (loginUser ! null new BCryptPasswordEncoder().matches(user.getPassword(), loginUser.getPassword())) {return loginUser;}return null;}Overridepublic User getById(Long id) {return userMapper.getById(id);}Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {User user userMapper.getByUsername(username);if (user null) {throw new UsernameNotFoundException(User not found with username: username);}return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), new ArrayList());Java后端的注册接口怎么实现 Java后端的注册接口的实现方式有很多种这里介绍其中一种常见的方式。 一般来说注册接口需要进行数据库的基本操作而且是前后端分离式开发。总的来说就是首先进行数据库的设计然后根据数据库进行编写服务端API接口接着来到客户端或移动端进行登录与注册的界面设计接收服务端提供的数据并显示在界面上。 以下是一个简单的注册接口实现方式 POST请求方式用户输入用户名和密码前端将用户提交的用户名和密码发送到后端进行验证。如果验证通过后端会将用户信息存储在数据库中。同时后端会将用户信息返回给前端前端将用户信息存储在本地。之后前端每次请求时都会带上用户信息后端会根据用户信息来判断用户是否已经注册如果已经注册则返回用户信息否则返回未注册状态。 如何防止SQL注入攻击 SQL注入攻击是一种常见的网络攻击方式它可以通过恶意的SQL语句来篡改数据库或者获取敏感信息。以下是一些防止SQL注入攻击的方法 使用参数化查询使用参数化查询可以将用户输入的数据与SQL语句分离从而避免了SQL注入攻击。在Java中可以使用PreparedStatement类来实现参数化查询。 过滤用户输入在用户输入数据之前对数据进行过滤和验证确保数据的合法性和安全性。例如可以使用正则表达式来限制用户输入的字符集。 使用ORM框架ORM框架可以自动将用户输入的数据转换为SQL语句从而避免了手动编写SQL语句的风险。例如Hibernate和MyBatis都是常用的ORM框架。 限制数据库用户权限将数据库用户的权限限制在最小范围内只允许其执行必要的操作可以减少SQL注入攻击的危害。 使用存储过程存储过程可以将SQL语句封装在一个过程中从而避免了手动编写SQL语句的风险。此外存储过程还可以提高SQL语句的执行效率。
http://www.dnsts.com.cn/news/5850.html

相关文章:

  • 网站安装代码想开民宿自己怎么做介绍的网站
  • 怎么建网站做wordpress目录下
  • 网站建设书籍附光盘建筑工程公司取名
  • 制作网站公司哪里好如何做好高端品牌网站建设
  • 重庆沛宣网站建设注册网络科技公司需要多少钱
  • 吴江区经济开发区建设工程网站ui设计师是做网站吗
  • 网站兼容手机浏览器怎么做私人网站
  • 阳朔县建设规划局网站网页网站作业制作
  • 建设人才网站互联网公司注册
  • 项城做网站做房地产网站
  • 网站怎么做成小程序网站 宗旨
  • 做牛仔的时尚网站mes系统
  • wordpress和百度指数大连seo排名外包
  • 一键生成个人网站wordpress 修改数据库表
  • 小说网站开发源码网站展示效果图
  • 免费psd模板素材网站seo综合查询
  • 网站建设与维护教学计划视频制作公司排行
  • 科技公司的网站建设费入什么科目网站资源建设的步骤
  • 深圳网站建设代理商怎么样能够为一个网站做推广
  • 如何做国际网站首页电子商务系统网站建设
  • 网站代码的重点内容是什么绍兴seo管理
  • wordpress 建app优化服务平台
  • 怎样设置网站主域名seo2短视频发布
  • 设计网站设计原则网站运营的目的及意义
  • 湖南建设c证查询网站显示网站翻页代码
  • 电子商务网站制作公司网站建设的流程是什么意思
  • 宾馆网站模板深圳网站建设 宝华大厦
  • 网站与网页之间的区别是什么wordpress 问答平台
  • 宜春做网站的联系电话创口贴设计网站官网
  • 好的建筑设计网站推荐广17网站一起做网店