我正在asp.net mvc项目上工作。该项目在localhost上运行得非常好,但是当我将该项目上载到服务器上时,我遇到了一些问题。我从一台计算机上登录,它成功登录了。我尝试以其他用户的身份登录。现在,我转到上一个用户登录,然后刷新页面,第二个用户登录将取代第一个用户登录。通常,前一个用户登录将替换为最近/最近的用户登录。在此问题上进行了大量搜索,但找不到任何内容。请分享有关此问题的一些建议。
我有一个名为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
}
}
}
答案 0 :(得分:0)
您有两个问题。一种是您在网络环境中使用static
变量,这意味着它们将在所有访问者之间共享。不要那样做
您更大的问题是这个
var check = entity.TblName.Where(x => x.UserName == model.UserName && x.Password == model.Password).ToList();
您正在使用自己的身份验证逻辑。绝对不要那样做。重新开始,使用ASP.NET身份,不要打扰编写自己的登录代码,因为这样做是错误的,并向用户开放了安全漏洞。