Ведение сессии в приложении MVC .net с использованием angularjs - PullRequest
0 голосов
/ 25 октября 2018

Я работаю над приложением, в котором пользователь, если у него есть учетная запись в db, может войти на веб-сайт и затем выполнить определенные функции.Одна из этих функций связана с созданием блога.Блог отображается в другом приложении проекта с использованием той же базы данных.Теперь, когда пользователь создает блог после входа в систему, мне нужно сохранить, кто создал блог, чтобы сделать это, я придумал 2 способа.Либо я продолжаю передавать идентификатор пользователя в качестве параметра на каждой странице URL, либо я могу создать сеанс, чтобы сохранить его на время входа в систему.

Я думаю, что последний вариант лучше, но я вродепотерял, как это сделать.Я создаю приложение уровня 3 проекта.со стороны клиента сделано в angularjs.Мой контроллер c # используется только для передачи данных json на другой уровень, который затем связывается с базой данных, находящейся на другом уровне.

Файлы проекта слишком велики, но я могу написать пример кода для него.

HTML:

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

AngualrJs:

    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);

    });
}               

    })

Контроллер:

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

LAYER Business Logic ----------------

UserLogic:

     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;
    }

Теперь я знаю, что могу создать переменную сеанса в контроллере следующим образом Session['Sessionname'] = user;, но я не уверен, что она будет работать с моим приложением, потому что у меня есть несколько контроллеров, и мне все равно придется передать их им.поэтому я не вижу смысла поддерживать переменную сеанса в каждом контроллере, даже если он не используется.Как мне создать сеанс?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018
 local storage is best option to do that :
window.localStorage.setItem("userId",useId);
to get again:
localStorage.getItem("userId");
0 голосов
/ 25 октября 2018

Вы можете использовать LocalStorage на стороне клиента для сохранения идентификатора пользователя и использовать его при необходимости, так как он будет сохранен в виде обычного текста, который вы можете зашифровать и сохранить.проверьте здесь, как зашифровать с помощью JavaScript https://stackoverflow.com/a/40478682/7262120

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...