Просто провел последние 3 дня, исследуя членство, iprincipal, личность и другие лакомства .., но что-то еще не ясно. Почему лучше использовать то, что подталкивает просто хранить в сеансе пользователя с минимальным доступом? может содержать роли, разрешения и другие настраиваемые свойства.ASP.NET MVC встроенное членство против сеанса
, чтобы достичь тому же в asp.net формы аутентификации, как я хотел бы сделать:
protected void Application_AuthenticateRequest()
{
HttpCookie cookie = Request.Cookies.Get(FormsAuthentication.FormsCookieName);
if (cookie == null)
return;
bool isPersistent;
int webuserid = GetUserId(cookie, out isPersistent);
//Lets see if the user exists
var webUserRepository = Kernel.Get<IWebUserRepository>();
try
{
WebUser current = webUserRepository.GetById(webuserid);
//Refresh the cookie
var formsAuth = Kernel.Get<IFormsAuthService>();
Response.Cookies.Add(formsAuth.GetAuthCookie(current, isPersistent));
Context.User = current;
}
catch (Exception ex)
{
//TODO: Logging
RemoveAuthCookieAndRedirectToDefaultPage();
}
}
private int GetUserId(HttpCookie cookie, out bool isPersistent)
{
try
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value);
isPersistent = ticket.IsPersistent;
return int.Parse(ticket.UserData);
}
catch (Exception ex)
{
//TODO: Logging
RemoveAuthCookieAndRedirectToDefaultPage();
isPersistent = false;
return -1;
}
}
Так мне нужно запросить БД по каждой проверке подлинности запроса, когда при помощи сеанса я это сделаю только один раз, когда пользователь входит в систему, я знаю, что вы можете хранить роли и другие пользовательские данные в куки-файле билета, но я не думаю, что он защищен, так как злоумышленник может изменить содержимое файла cookie, переместить его и т. д.
так, любой другой согласен?
Стоит отметить, есть альтернативы выше тоже, если вы счастливы сбиваться в глуши немного. Mongo/Memcached может быть хорошим из магазинов proc для такого рода вещей. – Nik
Спасибо, но рассмотрим вышеприведенный сценарий, имеет ли смысл продолжать удалять БД в каждом запросе, чтобы получить пользователя obj и назначить его контексту? – TomerMiz
Привет, может ли кто-нибудь ответить? – TomerMiz