如何实现软删除账号登录时的「该账号已删除」提示功能
解决已删除账号登录提示问题
看起来你的核心需求是:当用户使用已软删除(IsActive=2)的账号登录时,前端显示「this login is deleted」的提示。目前你的代码逻辑存在一些可以优化的地方,我来帮你调整:
后端(user.controller.cs)逻辑修正
首先,我们先明确状态定义,让判断逻辑更清晰:
IsActive = 0:账号正常可用IsActive = 1:账号被禁用IsActive = 2:账号已软删除
调整后的代码如下:
[Route("api/Users/Login")] [ResponseType(typeof(object))] public async Task<object> accountLogin(string name, string password) { string pwd = Encrypt(password); Users account = db.Users.FirstOrDefault(c => c.userlogin == name && c.password == pwd); string message = ""; if (account == null) { message = "404"; // 用户名或密码错误 } else if (account.IsActive == 2) { message = "500"; // 账号已删除 } else if (account.IsActive == 1) { message = "400"; // 账号被禁用 } else if (account.IsActive == 0) { message = JsonConvert.SerializeObject(account); // 返回正常用户信息 } else { message = "500"; // 处理未知状态,默认返回删除提示 } return new { a = message }; }
优化点说明:
- 用
FirstOrDefault简化了LINQ查询代码,更简洁高效 - 调整判断顺序:先检查账号是否存在,再判断已删除状态,接着是禁用状态,最后是正常状态,符合登录校验的优先级逻辑
- 把复杂的
(account.IsActive !=0) && (account.IsActive !=1)替换成明确的account.IsActive ==2,避免逻辑歧义,后期维护也更方便
前端(login.controller.js)逻辑优化
你的前端逻辑大体没问题,但可以让跳转判断更严谨,同时完善加载状态的处理:
$scope.login = function () { $scope.loading = true; authService.login($scope.userlogin) .then(function done(response) { console.log(response); if (response.a == '400') { $scope.error = 'account disabled'; $scope.loading = false; } else if (response.a == '500') { $scope.error = 'this login is deleted'; $scope.loading = false; } else if (response.a == '404') { console.log("login or password incorrect"); $scope.error = 'login or password incorrect'; $scope.loading = false; } else { // 只有当返回的是用户对象时,才跳转到仪表盘 console.log("bbb"); $location.url('Dashboard'); $scope.loading = false; } }, function fail(err) { $scope.error = 'Problem in connection ! contact administrator'; console.log(err); $scope.loading = false; }); }
优化点说明:
- 调整判断顺序,先处理所有错误码(400、500、404),最后处理正常登录的情况,逻辑更直观
- 给
fail回调也加上$scope.loading = false,避免登录失败后加载状态一直停留 - 把原来的条件判断简化为
else,因为前面已经排除了所有错误情况,更严谨
这样调整后,当用户使用已删除的账号登录时,后端会返回500,前端就会正确显示「this login is deleted」的提示了。
内容的提问来源于stack exchange,提问作者adem
相关产品推荐
相关产品推荐

