Я работаю над приложением, в котором пользователь, если у него есть учетная запись в 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;
, но я не уверен, что она будет работать с моим приложением, потому что у меня есть несколько контроллеров, и мне все равно придется передать их им.поэтому я не вижу смысла поддерживать переменную сеанса в каждом контроллере, даже если он не используется.Как мне создать сеанс?