成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Spring Boot 2結(jié)合Spring security + JWT實(shí)現(xiàn)微信小程序登錄

瀏覽:174日期:2022-06-25 08:45:35

項(xiàng)目源碼:https://gitee.com/tanwubo/jwt-spring-security-demo

登錄

通過自定義的WxAppletAuthenticationFilter替換默認(rèn)的UsernamePasswordAuthenticationFilter,在UsernamePasswordAuthenticationFilter中可任意定制自己的登錄方式。

用戶認(rèn)證

需要結(jié)合JWT來實(shí)現(xiàn)用戶認(rèn)證,第一步登錄成功后如何頒發(fā)token。

public class CustomAuthenticationSuccessHandler implements AuthenticationSuccessHandler { @Autowired private JwtTokenUtils jwtTokenUtils; @Override public void onAuthenticationSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException { // 使用jwt管理,所以封裝用戶信息生成jwt響應(yīng)給前端 String token = jwtTokenUtils.generateToken(((WxAppletAuthenticationToken)authentication).getOpenid()); Map<String, Object> result = Maps.newHashMap(); result.put(ConstantEnum.AUTHORIZATION.getValue(), token); httpServletResponse.setContentType(ContentType.JSON.toString()); httpServletResponse.getWriter().write(JSON.toJSONString(result)); }}

第二步,棄用spring security默認(rèn)的session機(jī)制,通過token來管理用戶的登錄狀態(tài)。這里有倆段關(guān)鍵代碼。

@Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable().sessionManagement()// 不創(chuàng)建Session, 使用jwt來管理用戶的登錄狀態(tài).sessionCreationPolicy(SessionCreationPolicy.STATELESS)......; }

第二步,添加token的認(rèn)證過濾器。

public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { @Autowired private AuthService authService; @Autowired private JwtTokenUtils jwtTokenUtils; @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { log.debug('processing authentication for [{}]', request.getRequestURI()); String token = request.getHeader(ConstantEnum.AUTHORIZATION.getValue()); String openid = null; if (token != null) { try {openid = jwtTokenUtils.getUsernameFromToken(token); } catch (IllegalArgumentException e) {log.error('an error occurred during getting username from token', e);throw new BasicException(ExceptionEnum.JWT_EXCEPTION.customMessage('an error occurred during getting username from token , token is [%s]', token)); } catch (ExpiredJwtException e) {log.warn('the token is expired and not valid anymore', e);throw new BasicException(ExceptionEnum.JWT_EXCEPTION.customMessage('the token is expired and not valid anymore, token is [%s]', token)); }catch (SignatureException e) {log.warn('JWT signature does not match locally computed signature', e);throw new BasicException(ExceptionEnum.JWT_EXCEPTION.customMessage('JWT signature does not match locally computed signature, token is [%s]', token)); } }else { log.warn('couldn’t find token string'); } if (openid != null && SecurityContextHolder.getContext().getAuthentication() == null) { log.debug('security context was null, so authorizing user'); Account account = authService.findAccount(openid); List<Permission> permissions = authService.acquirePermission(account.getAccountId()); List<SimpleGrantedAuthority> authorities = permissions.stream().map(permission -> new SimpleGrantedAuthority(permission.getPermission())).collect(Collectors.toList()); log.info('authorized user [{}], setting security context', openid); SecurityContextHolder.getContext().setAuthentication(new WxAppletAuthenticationToken(openid, authorities)); } filterChain.doFilter(request, response); }}接口鑒權(quán)

第一步,開啟注解@EnableGlobalMethodSecurity。

@SpringBootApplication@EnableGlobalMethodSecurity(prePostEnabled = true)public class JwtSpringSecurityDemoApplication { public static void main(String[] args) { SpringApplication.run(JwtSpringSecurityDemoApplication.class, args); }}

第二部,在需要鑒權(quán)的接口上添加@PreAuthorize注解。

@RestController@RequestMapping('/test')public class TestController { @GetMapping @PreAuthorize('hasAuthority(’user:test’)') public String test(){ return 'test success'; } @GetMapping('/authority') @PreAuthorize('hasAuthority(’admin:test’)') public String authority(){ return 'test authority success'; }}

到此這篇關(guān)于Spring Boot 2結(jié)合Spring security + JWT實(shí)現(xiàn)微信小程序登錄的文章就介紹到這了,更多相關(guān)Spring Boot Spring security JWT微信小程序登錄內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: 微信
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
丰满少妇在线播放bd日韩电影| 欧美mv日韩mv国产网站app| 欧美一区二区三区日韩| 日本中文字幕一区二区视频| 亚洲人人精品| 中文字幕久久午夜不卡| 99久久久久久| 精品少妇一区二区| 成人性色生活片免费看爆迷你毛片| 欧美三区在线观看| 蜜臀av亚洲一区中文字幕| 久久婷婷国产综合尤物精品| 亚洲地区一二三色| 美女久久一区| 婷婷亚洲久悠悠色悠在线播放| 噜噜噜91成人网| 日韩二区三区四区| 可以免费看不卡的av网站| 亚洲国产精品人人做人人爽| 99精品欧美一区二区三区| 亚洲欧美日韩系列| 亚洲乱码视频| 亚洲免费观看高清完整版在线 | 国产一区二区三区黄视频| 欧美色图在线观看| 国产乱国产乱300精品| 欧美精三区欧美精三区| 国产精品一级片在线观看| 日韩欧美国产一二三区| 懂色av一区二区在线播放| 欧美成人伊人久久综合网| yourporn久久国产精品| 国产亚洲福利社区一区| 国内在线观看一区二区三区| 亚洲精品国产一区二区三区四区在线| 一本色道久久精品| 亚洲超碰97人人做人人爱| 日本精品免费观看高清观看| 国产综合色在线| 久久免费的精品国产v∧| 欧美一区精品| 一本色道久久综合一区| 国产精品天美传媒| 国产欧美欧美| 91极品美女在线| 在线视频一区观看| 国产精品久久久久久久久晋中| 日韩国产欧美在线播放| 成人性视频免费网站| 国产精品国产三级国产aⅴ无密码| 欧美在线首页| 综合分类小说区另类春色亚洲小说欧美| 99精品国产在热久久婷婷| 香蕉影视欧美成人| 欧美日韩精品欧美日韩精品一综合| 国产精品系列在线观看| 久久久亚洲高清| 亚洲国产日本| 天堂成人国产精品一区| 蜜桃久久av| 久久久久久穴| 国产99精品国产| 中文字幕亚洲精品在线观看| 久久最新视频| 欧美国产另类| 中文成人av在线| 久久看片网站| 成人av片在线观看| 日韩伦理免费电影| 在线亚洲人成电影网站色www| 国产成人av电影在线观看| 国产精品久久一级| 一本一本久久a久久精品综合麻豆| 国产99一区视频免费| 久久久精品国产99久久精品芒果| 亚洲国产激情| 亚洲午夜精品久久久久久浪潮| 天堂久久久久va久久久久| 精品国产一区二区三区av性色| 999亚洲国产精| 国产一区在线精品| 亚洲欧洲精品一区二区三区 | 一区二区三区欧美在线观看| 欧美日韩黄色影视| 女生裸体视频一区二区三区| 午夜精品国产更新| www.日本不卡| 久久精品国产成人一区二区三区 | 中文一区一区三区高中清不卡| 亚洲欧美不卡| 国产91精品免费| 亚洲男人电影天堂| 91精品国产日韩91久久久久久| 影音先锋在线一区| 裸体在线国模精品偷拍| 香蕉久久一区二区不卡无毒影院| 日韩欧美国产综合| 亚洲一区日韩在线| 国产麻豆精品在线观看| 亚洲欧美视频在线观看视频| 国产欧美一区二区三区国产幕精品| 国产丶欧美丶日本不卡视频| 一区二区三区中文字幕在线观看| 欧美一级二级三级乱码| 国产伦精品一区二区三区照片91| www.亚洲激情.com| 美国精品在线观看| 亚洲蜜臀av乱码久久精品| 日韩欧美国产综合一区 | 欧美精品一区在线| 久久国产综合精品| 亚洲欧美精品午睡沙发| 日韩一级精品视频在线观看| 一本色道亚洲精品aⅴ| 亚洲天堂久久| 99久久99久久精品国产片果冻| 日韩专区欧美专区| 中文字幕一区二区三区不卡 | 国产精品私人影院| 欧美一级理论片| 羞羞答答国产精品www一本| 91麻豆精品秘密| 国产精品456露脸| 日本亚洲一区二区| 亚洲精品免费一二三区| 久久麻豆一区二区| 7777精品久久久大香线蕉| 久久福利影视| 精品69视频一区二区三区Q| 成人手机在线视频| 麻豆中文一区二区| 亚洲一区二区三区四区中文字幕| 亚洲国产岛国毛片在线| 日韩欧美成人一区二区| 欧美色网一区二区| 欧美亚洲专区| 亚洲黄色影院| 欧美日韩精品综合| 成人黄色在线网站| 国产精品一区二区久久精品爱涩| 午夜精品久久久久久久久| 亚洲图片另类小说| 中文字幕欧美三区| 久久亚洲一区二区三区四区| 欧美一区二区黄色| 欧美三级乱人伦电影| 一本久久综合亚洲鲁鲁五月天| 国产日韩欧美亚洲一区| 在线日韩视频| 亚洲日本免费| 国内一区二区在线视频观看| 91亚洲精品久久久蜜桃网站| 成人一二三区视频| 国产精品1区2区| 国产一区二区精品久久91| 久久成人免费电影| 奇米影视一区二区三区小说| 婷婷综合久久一区二区三区| 亚洲国产欧美另类丝袜| 亚洲一二三区不卡| 亚洲成在线观看| 一个色综合网站| 亚洲激情综合网| 一级做a爱片久久| 亚洲成人1区2区| 丝袜美腿亚洲一区| 日韩精品一二三| 日韩avvvv在线播放| 日本亚洲最大的色成网站www| 日本美女一区二区三区视频| 奇米影视在线99精品| 日本欧美在线观看| 美女高潮久久久| 国产麻豆91精品| 高清在线不卡av| a4yy欧美一区二区三区| 99综合电影在线视频| 99热在这里有精品免费| 97久久超碰精品国产| 午夜精品av| 国产综合色一区二区三区| 黄色亚洲大片免费在线观看| 亚洲国产二区| 亚欧成人精品| 欧美在线观看视频在线| 在线91免费看| 精品不卡在线视频| 国产嫩草影院久久久久| 国产精品国产三级国产aⅴ中文| 一区二区中文视频| 亚洲主播在线观看| 亚洲va欧美va国产va天堂影院| 视频一区欧美精品| 国内精品伊人久久久久av影院| 国产高清精品久久久久| 成人avav在线| 国产一区二区三区无遮挡 | 欧美精品一区二区三区四区| 国产欧美一区二区精品性色| 亚洲人成网站在线|