提交 57e655c8 authored 作者: yueweilu's avatar yueweilu

第二个用户登录 第一个登录的用户退出登录

上级 ec1b92d8
......@@ -89,7 +89,7 @@ class LoginController extends GetxController {
/// 测试账号
if (kDebugMode) {
phoneInput.text = '13521054068';
passwordInput.text = 'zj123456';
passwordInput.text = '12345678';
// phoneInput.text = '17311837355';
// passwordInput.text = '12345678';
}
......@@ -138,14 +138,18 @@ class LoginController extends GetxController {
// 存储用户信息
await Future.wait([
UserStore.to.setToken(result.token!),
UserStore.to.setAccessToken(result.accessToken!),
]);
await Future.wait([
UserStore.to.setInfo(result),
UserStore.to.profile(),
UserStore.to.login(result)
]);
// await Future.wait([
// UserStore.to.setToken(result.token!),
// UserStore.to.setAccessToken(result.accessToken!),
//
// ]);
//
// await Future.wait([
// UserStore.to.setInfo(result),
// UserStore.to.profile(),
// ]);
if (!context.mounted) return;
if (context.canPop()){
......
......@@ -635,6 +635,7 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
Console.log('解压缩文件:$fileName,保存路径:$filePath');
}
}
CustomToast.dismiss();
Toast.show('离线成功');
final exit = await _isExistFile(bookId);
update();
......@@ -842,7 +843,6 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
/// 添加阅读时长
void _addReadTime({required type}) async{
final result = await LibraryAPI.addReadTime(bookId: bookId, readTypes: type);
Console.log('-------------$result-------------------');
}
/// 获取离线文件路径
void getBookDown() async{
......@@ -852,6 +852,7 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
}
else{
CustomToast.loading();
final result = await LibraryAPI.getbookDownloadParam(bookId: bookId);
Console.log('----------_getBookDown------------------${result.download}');
......
......@@ -140,7 +140,16 @@ abstract class Routes {
initialLocation: '/$splash',
// initialLocation: '/',
observers: [observer],
// redirect: (context, state) => _RouteRedirect.auth(),
refreshListenable:UserStore.to.needLogin,
redirect: (context, state) {
final currentRoute = state.matchedLocation;
final loginRoute = state.namedLocation(login);
final mainRoute = state.namedLocation(main);
if (currentRoute.contains(mainRoute)) return null;
if(currentRoute.contains(loginRoute)) return null;
if(!UserStore.to.isLogin) return loginRoute;
return null;
},
routes: [
GoRoute(
path: '/$splash',
......
......@@ -99,9 +99,6 @@ class HttpService extends GetxService {
try {
final requestOptions = options ?? Options();
requestOptions.headers = _getHeaders(excludeToken: excludeToken,params: params,url: url);
Console.log('----headers------${requestOptions.headers}');
Console.log('----params------$params');
// 如果启用缓存,将cacheEnabled参数添加到请求选项中
if(cacheEnabled){
requestOptions.extra ??= {};
......@@ -114,6 +111,7 @@ class HttpService extends GetxService {
cancelToken: cancelToken,
);
if (showLoading) CustomToast.dismiss();
Console.log('----headers------${requestOptions.headers}\n----params------$params-----');
Console.log(response.data);
return ResponseModel.fromJson(response.data);
} catch (error){
......@@ -313,6 +311,7 @@ class _RequestInterceptor extends Interceptor {
Future<String?> refreshToken() async {
Console.log('--------refreshToken----------------');
final result = await HttpService.to.post(
'/v1/members/login/getToken',
params: {
......@@ -320,6 +319,12 @@ class _RequestInterceptor extends Interceptor {
}
);
if (result.data is Map) {
final String token = result.data['token'];
final String accessToken = result.data['access_token'];
if(token.isEmpty && accessToken.isEmpty){
UserStore.to.logout();
return null;
}
await Future.wait([
UserStore.to.setToken(result.data['token']),
UserStore.to.setAccessToken(result.data['access_token']),
......
part of store;
class UserStore extends GetxController {
class UserStore extends GetxController{
// 获取 UserStore 实例
static UserStore get to => Get.find();
......@@ -21,6 +21,10 @@ class UserStore extends GetxController {
UserModel _info = UserModel();
UserModel get info => _info;
// 是否需要登录
final ValueNotifier<bool> _needLogin = ValueNotifier<bool>(false);
ValueNotifier<bool> get needLogin => _needLogin;
@override
......@@ -29,6 +33,17 @@ class UserStore extends GetxController {
_token = StorageService.to.getString(kLocalToken);
}
Future<void>login(UserModel value) async{
_token = value.token??'';
_accessToken = value.accessToken??'';
await StorageService.to.setString(kLocalToken,_token);
await StorageService.to.setString(kLocalAccessToken, value.accessToken??'');
await StorageService.to.setString(kLocalUserInfo, jsonEncode(value.toJson()));
_needLogin.value = false;
_info = value;
_isLogin = true;
update();
}
Future<void> setToken(String value) async {
await StorageService.to.setString(kLocalToken, value);
_token = value;
......@@ -41,6 +56,7 @@ class UserStore extends GetxController {
Future<void> setInfo(UserModel value) async {
await StorageService.to.setString(kLocalUserInfo, jsonEncode(value.toJson()));
_needLogin.value = false;
_info = value;
}
......@@ -51,6 +67,7 @@ class UserStore extends GetxController {
await StorageService.to.remove(kLocalUserInfo);
_token = '';
_isLogin = false;
_needLogin.value = true;
}
Future<void> profile() async {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论