Разрешить только один сеанс входа в систему для каждого пользователя

По сути, я спрашиваю этот вопрос здесь, но я использую ASP Identity вместо поставщика ASP.Net Membership, и поэтому этот ответ мне бесполезен.


person GregoryHouseMD    schedule 18.08.2014    source источник
comment
stackoverflow .com/questions/2922502/   -  person Michael B.    schedule 18.08.2014
comment
Ответ, на который вы ссылаетесь, в значительной степени соответствует тому, что вам нужно сделать. Ссылки на членство минимальны, и вы легко сможете изменить их на удостоверение личности.   -  person Simon Halsey    schedule 18.08.2014


Ответы (1)


Разобрался, как это сделать. При входе в систему я называю это:

var key = user.UserName;
var timeOut = new TimeSpan(0, 0, HttpContext.Current.Session.Timeout, 0, 0);
HttpContext.Current.Cache.Insert(key, Session.SessionID, null, DateTime.MaxValue, timeOut, CacheItemPriority.NotRemovable, null);

И это в Global.asax

if (Session["username"] != null)
    {
        var cacheKey = Session["username"].ToString();
        if ((string) HttpContext.Current.Cache[cacheKey] != Session.SessionID) LogOut();
    }
person GregoryHouseMD    schedule 14.09.2015
comment
Где в Global.asax? В каком методе? - person Vijay Patel; 17.08.2017
comment
Сейчас не помню, могу проверить через пару часов. - person GregoryHouseMD; 17.08.2017