使用angularjs在MVC .net应用程序中维护会话

时间:2018-10-25 06:53:30

标签: angularjs asp.net-mvc

我正在开发一个应用程序,其中用户(如果在db中拥有一个帐户)可以登录网站,然后执行某些功能。这些功能之一涉及创建博客。该博客正在使用同一数据库显示在另一个项目应用程序中。现在,当用户登录后创建博客时,我需要存储创建博客的人来做到这一点,我想出了两种方法。我要么继续在每个页面URL上将用户ID作为参数传递,要么我可以创建一个会话以便在登录期间存储它。

我认为后者是一个更好的选择,但我对如何做到这一点有些迷失。我正在创建一个3项目层应用程序。客户端在angularjs中完成。我的c#控制器仅用于将json数据传递到另一层,然后与另一层的数据库进行通信。

项目文件太大,但是我可以为此编写示例代码。

HTML:

259 ms

AngalrJs

    <div ng-app="Module">
       <div ng-controller="AppController">
          <input ng-model="user.Email" type="email"\>
          <button type="button" ng-click="UserLogin()"\>
       </div>
    </div>

控制器:

    var app = angular.module('Module', []);
    app.controller("AppController", function ($scope) {

          $scope.loginchk = function () {

    Post("/User/LoginValidation", $scope.user, false, $("#btnlogin")).then(function (d) {
        if (d.Success) {

            window.location.href = "/User/LoggedIn?emailId=" + $scope.user.Email;
        }
        ShowMessage(d);

    });
}               

    })

业务逻辑层

UserLogic:

     public JsonResult LoginValidation(LoginUser user) {
        return Json((new userLogic()).LoginChk(user), JsonRequestBehavior.AllowGet);
    }

现在我知道我可以在像这样的 public Message LoginChk(LoginUser user) { Message msg = new Message(); try { Account userProfile = db.Accounts.Where(b => b.Email == user.Email).FirstOrDefault(); if (userProfile == null) { msg.Success = false; msg.MessageDetail = "Account Email does not exist"; } else { if (userProfile.password != user.Password) { msg.Success = false; msg.MessageDetail = "Wrong Password"; } else { msg.Success = true; msg.MessageDetail = "Logged In"; } } } catch(Exception ex) { msg.Success = false; msg.MessageDetail = "DB connection failed."; } return msg; } 控制器中创建会话变量了 但我不确定它是否可以与我的应用程序一起使用,因为我有多个控制器,但仍将其传递给他们。所以我看不到在每个控制器中维护会话变量的意义,即使它没有被使用。我该如何创建会话?

2 个答案:

答案 0 :(得分:1)

您可以使用客户端LocalStorage保存用户ID,并在需要时使用它, 因为它将以纯文本格式保存,所以您可以对其进行加密和保存。 在这里检查如何使用javascript进行加密 https://stackoverflow.com/a/40478682/7262120

答案 1 :(得分:1)

 local storage is best option to do that :
window.localStorage.setItem("userId",useId);
to get again:
localStorage.getItem("userId");