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

网站半年没更新怎么做SEO最新军事新闻事件今天

网站半年没更新怎么做SEO,最新军事新闻事件今天,建站公司网站模板,影视app搭建教程在文章:SpringBoot整合SpringSecurit(一)实现ajax的登录、退出、权限校验-CSDN博客 里面,使用的session的方式进行保存用户信息的,这一篇文章就是使用token的方式。 在其上进行的改造,可以先看SpringBoot…

在文章:SpringBoot整合SpringSecurit(一)实现ajax的登录、退出、权限校验-CSDN博客

里面,使用的session的方式进行保存用户信息的,这一篇文章就是使用token的方式。

在其上进行的改造,可以先看SpringBoot整合SpringSecurit(一)实现ajax的登录、退出、权限校验-CSDN博客,再看这个就比较好了。

1、新建过滤器,将通过token查询到的用户信息存入到security中

package com.example.springboot.security.demo.filter;import com.example.springboot.security.demo.controller.LoginController;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.filter.OncePerRequestFilter;import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Objects;/*** 将用户信息存入security中*/
@Slf4j
@Component
public class AuthFilter extends OncePerRequestFilter {@Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {// 比如请求头中有个header叫token,放置了认证后的请求头String token = request.getHeader("token");log.info("用户token:{}", token);if (StringUtils.hasText(token)) {// 验证token是否已经登录了的用户的token,用户的token临时放在了LoginControllerUserDetails userDetails = LoginController.TOKEN_USERNAME.get(token);if (Objects.nonNull(userDetails)) {// 有,表示token是对的,设置线程上下文认证信息,然后访问其他资源时,security就会放行UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(userDetails.getUsername(), userDetails.getPassword(), userDetails.getAuthorities());SecurityContextHolder.getContext().setAuthentication(authenticationToken);}}filterChain.doFilter(request, response);}
}

2、修改security的配置

/*** 密码加密方式* //使用BCrypt进行密码加密校验* @return*/@Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}/*** 2.0配置,security通过token访问,不通过session访问* @param http* @throws Exception*/@Resourceprivate AuthFilter authFilter;@Overrideprotected void configure(HttpSecurity http) throws Exception {http.csrf().disable();//禁用CSRF控制,即spring security不再限制CSRF,即跨越访问http.authorizeRequests().antMatchers("/static/**").permitAll()//不需要登录认证就可以访问,静态资源等不需要验证.antMatchers("/login").permitAll() // 允许任何人访问登录接口.anyRequest().authenticated();//其他路径必须验证身份http.sessionManagement(sessionManager -> sessionManager.sessionCreationPolicy(SessionCreationPolicy.STATELESS)); //不再管理session// 设置用户访问前filterhttp.addFilterBefore(authFilter, UsernamePasswordAuthenticationFilter.class);http.formLogin().loginPage("/login-view.html")//自定义登录页面路径,加载登录的html页面.successHandler(userLoginAuthenticationSuccessHandler)//验证成功处理.failureHandler(userLoginAuthenticationFailureHandler)//验证失败处理.permitAll();//登录页面无需设置验证http.logout().logoutUrl("/logout")//登出路径.logoutSuccessHandler(userLogoutSuccessHandler)//登出处理.permitAll()//不需要身份认证.and().exceptionHandling().accessDeniedHandler(userAuthenticationAccessDeniedHandler);//无权限时的处理}

3、修改登录方法,后端获取到账号、密码后,根据账号,查询到用户信息,在校验密码,如果密码成功,就生成token,并且把token放在内存或者redis中就完成了

/*** 简单的存放用户登录认证成功信息的地方*/public final static Map<String, UserDetails> TOKEN_USERNAME = new HashMap<>();@Resourceprivate UserDetailsServiceImpl userDetailsService;/*** SecurityConfig中配置的密码加密*/@Resourceprivate PasswordEncoder passwordEncoder;/*** 登录认证,获得token* @param account 登录账号* @param password 密码* @return 认证token*/@ResponseBody@PostMapping("/login")public JsonData login(String account, String password) {JsonData jsonData = null;//根据账号,查询用户信息UserDetails userDetails = userDetailsService.loadUserByUsername(account);if (userDetails == null) {jsonData = new JsonData(401,"用户名不存在");return jsonData;}//密码校验if(!passwordEncoder.matches(password,userDetails.getPassword())) {jsonData = new JsonData(401,"用户或密码错误");return jsonData;}// 认证成功发个token,返回给前端String token = UUID.randomUUID().toString();TOKEN_USERNAME.put(token, userDetails);System.out.println("token:" + token);jsonData = new JsonData(200,token);return jsonData;}

4、测试

4.1、获取token

4.2、通过token查询信息

 

http://www.hengruixuexiao.com/news/15445.html

相关文章:

  • 票务网站模板百度自然搜索排名优化
  • 东莞英文建站什么是互联网营销
  • 移动端网站怎么提交拼多多seo是什么意思
  • 郑州网站优化哪家专业北京优化推广
  • 如何做网站小编aso优化app推广
  • 网站开发的国内外现状深圳seo优化seo优化
  • 网站建设每月工作多少seo专员岗位要求
  • 优质高职院校建设网站引流推广网站平台
  • 商业网站图片网络推广怎么推广
  • 运输网站建设优化关键词排名哪家好
  • 动态网站加速器seo排名助手
  • 网站建设算研发费用吗长沙seo霜天
  • 以你的心诠释我的爱网页设计素材seo sem是啥
  • 南京学习做网站关键词推广优化app
  • 成都模板网站建设服务如何制作一个个人网站
  • 做服务网站发展背景舆情优化公司
  • 创新的武进网站建设百度ai入口
  • 正规的网络分销平台有哪些百度网站排名优化软件
  • 没有网站怎么做cpa赚钱广州新塘网站seo优化
  • 优化网站的方法有哪些百度最新推广产品
  • 镇政府网站模板免费b站动漫推广网站2023
  • 系统开发技术seo资源网站排名
  • 济南外贸建站找精准客户的app
  • 吉林省建设安全信息网官网seo成创网络
  • 搞跨境电商 wordpress某企业网站的分析优化与推广
  • 深圳网站制作公司流程图想学编程去哪里找培训班
  • 湛江专业雷剧视频seo最新
  • 网站建设牜金手指花总十五seo外链代发
  • 网站模糊背景计算机培训班培训费用
  • 做网站口碑比较好的大公司网站怎么添加外链