日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Passport用户认证

發(fā)布時(shí)間:2024/10/6 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Passport用户认证 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.介紹

1.在購(gòu)物車(chē)之前功能,不需要對(duì)用戶(hù)登陸進(jìn)行判定
2.在購(gòu)物車(chē)之后的功能必須對(duì)用戶(hù)登錄進(jìn)行判定
3.在購(gòu)物車(chē)功能中,必須對(duì)購(gòu)物車(chē)進(jìn)行判定,但是判定失敗也
可以繼續(xù)使用(程序可以繼續(xù)執(zhí)行cookie分支)

2.登陸的入口

1.直接點(diǎn)擊登陸登錄功能
2.結(jié)算時(shí)被登錄攔截

3.認(rèn)證中心的設(shè)計(jì)

1.給用戶(hù)辦法通行證token
2.驗(yàn)證其他業(yè)務(wù)功能接受的token(用戶(hù)訪(fǎng)問(wèn)攜帶的)真?zhèn)?br />

4.認(rèn)證中心的整合

1.引入認(rèn)證中心的靜態(tài)資源

2.在search-web模塊的頁(yè)面點(diǎn)擊登陸鏈接上加入認(rèn)證中心url

3.增加一個(gè)測(cè)試的結(jié)算功能(真正的結(jié)算模塊在訂單模塊)

4.加入攔截器(web-util加入攔截器,讓所有請(qǐng)求web的應(yīng)用都被攔截)

5.加入攔截器具體代碼

@Component public class AuthInterceptor extends HandlerInterceptorAdapter {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {/*** 攔截代碼*/return true;} }

6.加入攔截器整合類(lèi)

@Configuration public class WebMvcConfiguration extends WebMvcConfigurerAdapter {@AutowiredAuthInterceptor authInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry){registry.addInterceptor(authInterceptor).addPathPatterns("/**");super.addInterceptors(registry);} }

7.攔截器的具體使用方式

1.通過(guò)web模塊是否掃描攔截器來(lái)來(lái)決定攔截器的使用
2.可過(guò)注解的方式來(lái)標(biāo)識(shí)具體的是否要通過(guò)攔截器@LoginRequired
第一類(lèi)方法:不需要進(jìn)行攔截的方法(沒(méi)有攔截器注解)直接放行
第二類(lèi)方法:需要攔截但攔截校驗(yàn)失敗(用戶(hù)沒(méi)登陸或登錄過(guò)期)也可以繼續(xù)訪(fǎng)問(wèn)失敗也可以訪(fǎng)問(wèn),比如購(gòu)物車(chē)的所有方法@LoginRequired(loginSuccess=false)
第三類(lèi)方法:需要攔截,但攔截校驗(yàn)一定要通過(guò)(用戶(hù)登陸成功了)才能訪(fǎng)問(wèn)@LoginRequired(loginSuccess=true)

@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface LoginRequired {boolean loginSuccess() default true; }

5.JWT加密算算法

1.JWT工具類(lèi)JwtUtil

public class JwtUtil {public static String encode(String key,Map<String,Object> param,String salt){if(salt!=null){key+=salt;}JwtBuilder jwtBuilder = Jwts.builder().signWith(SignatureAlgorithm.HS256,key);jwtBuilder = jwtBuilder.setClaims(param);String token = jwtBuilder.compact();return token;}public static Map<String,Object> decode(String token ,String key,String salt){Claims claims=null;if (salt!=null){key+=salt;}try {claims= Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody();} catch ( JwtException e) {return null;}return claims;} }

2.測(cè)試程序

public class Test {public static void main(String[] args) {HashMap<String, Object> hashMap = new HashMap<String, Object>();hashMap.put("name","steven");hashMap.put("password","324756");String ip="127.0.0.1";Date date=new Date();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");String format = dateFormat.format(date);String encode = JwtUtil.encode("2019gmall0105", hashMap, ip + format);System.out.println(encode);}}

5.passport登錄功能

1.點(diǎn)擊按鈕,在登陸頁(yè)面輸入用戶(hù)名和密碼驗(yàn)證用戶(hù)登錄是否成功,生成jwt的token返回到search.gmall.com/index,再攔截器里返回的token寫(xiě)入cookie

2.點(diǎn)擊結(jié)算按鈕,攔截器攔截請(qǐng)求
A 該用戶(hù)沒(méi)有登陸,并且請(qǐng)求時(shí)必須要登陸,將用戶(hù)打回到認(rèn)證中心進(jìn)行登陸
B 該用戶(hù)沒(méi)登陸,并且結(jié)算請(qǐng)求時(shí)沒(méi)有登陸也可以訪(fǎng)問(wèn)(不可能發(fā)生),放行
3.在被攔截登陸后,返回原始請(qǐng)求(攜帶登陸成功后頒發(fā)的token)
4.原始請(qǐng)求的攔截器二次被攔截請(qǐng)求,攔截請(qǐng)求后,將頒發(fā)token寫(xiě)入cookie

6.從首頁(yè)點(diǎn)擊登陸流程

1.首頁(yè)訪(fǎng)問(wèn)登錄頁(yè),攜帶ReturnUrl跳轉(zhuǎn)地址

2.登錄頁(yè)保存跳轉(zhuǎn)地址

@RequestMapping("index")public String index(String ReturnUrl, ModelMap map){map.put("ReturnUrl",ReturnUrl);return "index";}

3.登錄頁(yè)通過(guò)異步方法驗(yàn)證用戶(hù)名和密碼
4.辦法token給異步ajax

function submitLogin(){var username=$("#username").val();var password=$("#password").val();$.post("login",{username:username,password:password},function (token) {alert(token);//驗(yàn)證token是否為空或者異常window.location.href=$("#ReturnUrl").val()+"?token="+token;});}

5.異步Ajax得到token,然后根據(jù)跳轉(zhuǎn)地址ReturnUrl訪(fǎng)問(wèn)原始功能

0.請(qǐng)求原始應(yīng)用
1.被攔截器攔截
2.攔截器通過(guò)注解判斷
是否需要進(jìn)行身份驗(yàn)證
是否必須通過(guò)身份驗(yàn)證
4.在認(rèn)證中心登陸后,進(jìn)行重新的請(qǐng)求,請(qǐng)求原始應(yīng)用
輸入用戶(hù)名密碼后進(jìn)行第二次請(qǐng)求(請(qǐng)求原始地址)
5.驗(yàn)證通過(guò)httpClient(Apache一個(gè)通用工具類(lèi))
6.驗(yàn)證結(jié)果結(jié)合注解的情況

總結(jié)

以上是生活随笔為你收集整理的Passport用户认证的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。