ログイン時に、ユーザーの行をASP.NET_SessionIdクッキーと共にどのような役割があるかの詳細を保持するAccessSessionテーブルに挿入します。このGetRolesForUserメソッドのASP.NETカスタムRoleProvider - クッキーの使用
マイカスタム実装は次のとおりです。
public override string[] GetRolesForUser(string username)
{
List<string> roles = new List<string>();
string[] rolesArray;
char[] splitter = { '|' };
string sessionId = HttpContext.Current.Request.Cookies["ASP.NET_SessionId"].Value;
AccessSession sessionObject = AccessSession.Get(sessionId);
if (sessionObject != null)
{
rolesArray = sessionObject.Roles.Split(splitter);
foreach (string role in rolesArray)
{
if (!String.IsNullOrEmpty(role))
{
roles.Add(role);
}
}
}
return roles.ToArray();
}
私が持っている問題は、私が間違っている、このアプローチを使用していますか? Cookieが無効になっている場合、HttpContext.Current.Request.Cookies ["ASP.NET_SessionId"]は存在しません。私の代わりの計画は、SessionにAccessSessionオブジェクトを挿入することでしたが、カスタムRoleProviderがアクセスしようとすると、常にnullと表示されます。
私はcacheRolesInCookie = trueを使用できますが、Cookieを無効にすると機能が損なわれるため、上記の方法よりも優れていません。
おかげで、 リチャード