同步操作将从 shenzhanwang/Spring-jwt 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
function fetchToken(){
var name = token_storage.getItem('username');
var pwd = token_storage.getItem('password');
var data={
'scope':'server',
'grant_type':'password',
'username':"java",
"password":"1234"
};
$.ajax({
url: "/oauth/token",
type:"post",
data:data,
async: false,
contentType: 'application/x-www-form-urlencoded',
beforeSend:function(xhr){
xhr.setRequestHeader("Authorization", 'Basic ' + BASE64.encode(client_id+':'+client_secret));
},
success: function (sResponse) {
saveAuth(sResponse);
console.log('fetch_token ok: ' + sResponse.access_token+' expires_in:'+sResponse.expires_in);
},
error:function(a,b,c){
console.log(a, b, c);
}
});
}
如果要刷新token,则:
function refreshToken(){
var auth = getAuth();
var data={
'client_id': client_id,
'client_secret': client_secret,
'grant_type':'refresh_token',
'refresh_token':auth.refresh_token
};
$.ajax({
url: "/oauth/token",
type:"post",
data:data,
async: false,
contentType: 'application/x-www-form-urlencoded',
success: function (sResponse) {
saveAuth(sResponse);
console.log('refresh_token ok: ' + sResponse.access_token+' expires_in:'+sResponse.expires_in);
},
error:function(a,b,c){
if (a.status==400 && a.responseJSON.error=='invalid_grant'){
console.log('refresh token invalid');
clearAuth();
}
}
});
}
发送请求前,在登录页面使用ajaxSetup()对ajax请求的token初始化并写入localStorage。登录用户名java,密码1234
如此,则所有请求头都自带token:
然后拿着token去拉接口:
如果token过期就刷新token:
OAauth2.0包括以下角色:
总之,对于授权码模式,先申请授权码,然后用授权码申请token令牌,然后把token令牌放在请求头拉取其他接口。如果是密码模式,则可以跳过授权码,直接走后面两步。
需要先申请授权code:http://localhost:8080/oauth/authorize?response_type=code&client_id=web
直接取申请token:
包含组件Spring boot v2.2.2+Dubbo v2.7.5+Nacos v1.1.1 效果图
包含组件Nacos+Feign+Gateway+Ribbon+Sentinel+Zipkin 效果图
包含组件nacos v1.1.0 + seata v0.7.1 +spring boot dubbo v2.7.5 效果图
包含组件nacos v1.1.0 + seata v0.7.1 +spring cloud alibaba v2.1.0 效果图
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。