在这种环境下,我相对较新。我将React和Typescript与“ Ant design pro 4”一起用于新项目。
我成功地将我的IdentityServer 4称为登录令牌。我在浏览器中看到了我的回复。
但是如何在我的代码中获取令牌?
import { Reducer } from 'redux';
import { Effect } from 'dva';
export interface StateType {
status?: 'ok' | 'error';
jsonRes: string;
type?: string;
currentAuthority?: 'user' | 'guest' | 'admin';
}
export interface LoginModelType {
namespace: string;
state: StateType;
effects: {
login: Effect;
};
reducers: {
changeLoginStatus: Reducer<StateType>;
};
}
const Model: LoginModelType = {
namespace: 'login',
state: {
// status: undefined,
jsonRes: '',
},
effects: {
* login({ payload }, { call, put }) {
const response = yield call(accountLogin, payload);
yield put({
type: 'changeLoginStatus',
payload: response,
});
},
},
reducers: {
changeLoginStatus(state, { payload }) {
return {
...state,
jsonRes: payload.json, //not work
};
},
},
};
export default Model;
编辑: 也许有帮助。
export async function accountLogin(params: LoginParamsType) {
const sendData = `grant_type=password&username=${params.userName}&password=${params.password}& ........`;
const retValue = request('https://localhost:44308/connect/token', {
method: 'POST',
data: sendData,
mode: 'no-cors',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: 'string',
});
return retValue;
}
答案 0 :(得分:0)
使用payload.json()
。它将读取响应流以完成操作并将响应解析为json。
答案 1 :(得分:0)
我确定您现在已经知道了,但是无论如何这里都可以
reducers: {
changeLoginStatus(state, { payload }) {
return {
...state,
jsonRes: payload.access_token, //<--this should do it
};
},
调用const response = yield call(accountLogin, payload);
时,它将获得在调试窗口中看到的输出。
希望有帮助。