現在、ASP.NET MVC 3を使用してサイトを開発していますが、Nhibernateを使用しています。以下に説明するように、カスタムMembershipProviderを作成しました。
私の質問は、ValidateUserメソッドのセッションでユーザー認証を記録し、GetUserで取得するときです。
私が気付いたところによると、ValidateUserでSessionを使用することはできませんが、ストレージはユーザーセッションごとではないため、Cacheを使用することは正しくありません。
私はどのように行いますか?
class MyMembershipProvider : MembershipProvider
{
public override MembershipUser GetUser(string username, bool userIsOnline)
{
var membershipUser = MyMembershipUser)HttpContext.Current.Cache.Get(username);
// Is not possible
// var membershipUser = (MyMembershipUser) HttpContext.Current.Session[username];
return membershipUser;
}
public override bool ValidateUser(string username, string password)
{
var usuario = UsuarioRepository.GetUsuarioAuthentication(username, password);
if (usuario != null)
{
HttpContext.Current.Cache.Add(username, new MyMembershipUser(usuario.Id, usuario.Email), null,
Cache.NoAbsoluteExpiration, FormsAuthentication.Timeout,
CacheItemPriority.Default, null);
// Is not possible
// HttpContext.Current.Session.Add(username, new MyMembershipUser(usuario.Id, usuario.Email));
return true;
}
return false;
}
}