Предыдущий логин пользователя заменен недавним / последним логином - PullRequest
0 голосов
/ 12 ноября 2018

Я работаю над проектом asp.net mvc. Проект работает удивительно на локальном хосте. Однако когда я загружаю проект на сервер, у меня возникают некоторые проблемы. При входе в систему с компьютера он успешно регистрируется. Затемя пытаюсь войти в систему как другой пользователь, это работает. Теперь я перехожу к логину предыдущего пользователя и обновляю страницу, когда логин второго пользователя берет на себя регистрацию первого пользователя. В общем, логин предыдущего пользователя заменяется логином недавнего / последнего пользователя.Я много искал по этой проблеме, но ничего не нашел. Пожалуйста, поделитесь некоторыми предложениями по этой проблеме.

У меня есть контроллер с именем AuthenticateController, который выполняет действия, такие как вход в систему и выход из системы. Я попытался реализовать сессию, но безуспешноВот код. Пожалуйста, помогите мне с правильным кодом реализации сеанса, если это возможно, или если есть какие-то изменения, которые мне нужно внести в мой код. Было бы замечательно, если есть другой способ достижения аутентификации с правильным входом в систему и вопросом кнопки возврата.. Заранее спасибо !!

public class AuthenticateController : Controller
{
    DBEntities entity = new DBEntities();

    public static int userid = 0;
    public static string getreference = string.Empty;

    public ActionResult Login()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Login(AuthenticateModel model)
    {
        try
        {
            var check = entity.TblName.Where(x => x.UserName == model.UserName && x.Password == model.Password).ToList();
            if (check.Count > 0)
            {
                foreach (var r in check)
                {
                    GlobalVaribale.UserId = r.UserId;
                    //FullName
                    GlobalVaribale.UserName = r.FullName;
                    GlobalVaribale.UserAccessLevel = r.AccessLevel.Value;
                    GlobalVaribale.OrgId = r.OrganisationId.Value;
                    Session["UserId"] = r.UserId;
                    Session.Timeout = 10;

                }
                return RedirectToAction("Index", "Home");
            }
            else  
            {
                TempData["Wrong"] = "Invalid Credentials";
                return View();
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            return View();
        }

    }

    public ActionResult Logout()
    {
        Session["UserId"] = null;
        Session.Abandon();
        GlobalVaribale.UserId = 0;
        GlobalVaribale.UserName = string.Empty;
        GlobalVaribale.UserAccessLevel = 0;
        GlobalVaribale.OrgId = 0;
        return RedirectToAction("Login");
    }


}

}

Я создал глобальную папку, в которой у меня есть класс с именем GlobalVaribale. Код приведен ниже

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace TimeSheet.Global
{
public static class GlobalVaribale
{
    public static int UserId = 0;
    public static int OrgId = 0;
    public static int UserAccessLevel = 0;
    public static string UserName = string.Empty;

    public enum AccessLevel
    {
        admin = 1,
        management = 2,
        employee = 3,
        contractor = 4,
        superamin = 5
    }
}

}

1 Ответ

0 голосов
/ 13 ноября 2018

У вас две проблемы. Во-первых, вы используете static переменные в веб-контексте, что означает, что они будут доступны всем посетителям. Не делай этого.

Ваша большая проблема заключается в следующем:

var check = entity.TblName.Where(x => x.UserName == model.UserName && x.Password == model.Password).ToList();

Вы используете свою собственную логику аутентификации. Определенно не делай этого. Начните сначала, используйте ASP.NET Identity и не беспокойтесь о написании собственного кода входа в систему, потому что вы делаете это неправильно и открываете своих пользователей для уязвимостей безопасности.

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