SO를 포함하여 웹을 검색했지만 문제에 대한 최상의 해결책을 찾을 수 없습니다. 나는이 2 명 선으로 약 15 컨트롤러가있는 MVC 프로젝트를 인수하고 각 컨트롤러 클래스는 시작했다 :MVC에서 로그인 세션 변수를 관리하는 방법
int userid = (int)System.Web.HttpContext.Current.Session["UserID"]; string usertype = (string)System.Web.HttpContext.Current.Session["UserType"];
이 두 변수 (사용자 ID, 유저 유형은) 다음 컨트롤러 throught를 사용하는 액션 메소드.
이 문제를 방지하는 가장 좋은 방법은 무엇입니까? 내가 찾은 두 가지 옵션은 SessionEndAttribute 클래스를 생성하여 각 컨트롤러에 추가하거나 세션 검사로 기본 컨트롤러 클래스를 만들고 모든 컨트롤러 클래스를 BaseController 클래스에서 상속 받도록 만드는 것입니다.
이 나는 순간 한 일이다, 이것은 올바른 방법 인 경우 알려
컨트롤러 :
[SessionExpire]
public class WordShareController : Controller
{
int userid = 0;
string usertype = string.Empty;
public WordShareController() : this(new SessionManagement())
{
}
public WordShareController(SessionManagement objSession)
{
userid = objSession.UserId;
usertype = objSession.UserType;
}
SessionManagement.cs
public class SessionManagement
{
private int _userId = 0;
private String _userType, _userName, _webName = string.Empty;
public SessionManagement()
{
if (HttpContext.Current.Session["UserID"] != null)
{
_userId = Convert.ToInt32(HttpContext.Current.Session["UserID"]);
_userType = Convert.ToString(HttpContext.Current.Session["UserType"]);
_userName = Convert.ToString(HttpContext.Current.Session["UserName"]);
_webName = Convert.ToString(HttpContext.Current.Session["WebName"]);
}
}
public int UserId
{
get
{
return _userId;
}
}
public string UserType
{
get
{
return _userType;
}
}
public string UserName
{
get
{
return _userName;
}
}
public string WebName
{
get
{
return _webName;
}
}
}
SessionExpireAttribute.cs
public class SessionExpireAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpSessionStateBase session = filterContext.HttpContext.Session;
// If the browser session or authentication session has expired...
if (session.IsNewSession || session["LoginUser"] == null)
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
// For AJAX requests, return result as a simple string,
// and inform calling JavaScript code that a user should be redirected.
JsonResult result = new JsonResult()
{
Data = "SessionTimeout",
ContentType = "text/html"
};
filterContext.Result = result;
}
else
{
// For round-trip requests,
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary {
{ "Controller", "User" },
{ "Action", "Login" }
});
}
}
base.OnActionExecuting(filterContext);
}
}
처럼이 인증합니다 클래스를 등록하는 것이인가 갈 올바른 방법? 누구? –