これは単純なはずですが、私のグーグルではわかりません。ここに私が欲しいものがあります。私は、権限を与えたいカスタムのUsersテーブル(現時点ではロールはありません)を持っています。このために、すでに行っているカスタムメンバーシッププロバイダを実装する必要があります。私の質問は、カスタムIPrincipalをHttpContext.Current.Userに設定する方法を教えてください。それはどこで起こるはずですか?のは、私は次のセットアップを持っているとしましょう:ASP.NET MVCでフォーム認証を使用するカスタムIPrincipal
public class CustomMembershipProvider : MembershipProvider
{
private IUserRepository _repository;
public CustomMembershipProvider(IUserRepository repository)
{
_repository = repository;
}
public override bool ValidateUser(string username, string password)
{
//check user repository
}
//additional methods omitted for brevity
}
私はその後、実装IPrincipal
とIIdentity
public class CustomUser : IPrincipal
{
public CustomUser(string name, int userId, string additionalInfo)
{
Identity = new CustomIdentity(name, userId, additionalInfo);
}
public IIdentity Identity { get; private set; }
public bool IsInRole(string role)
{
return true;
}
}
public class CustomIdentity : IIdentity
{
public CustomIdentity(string name, int userId, string additionalInfo)
{
Name = name;
UserId = userId;
AdditionalInfo = additionalInfo;
}
public string Name { get; private set; }
public string AuthenticationType
{
get { return "CustomAuth"; }
}
public bool IsAuthenticated
{
get { return !String.IsNullOrEmpty(Name); }
}
public int UserId { get; private set; }
public string AdditionalInfo { get; private set; }
}
カスタム・ユーザー・クラスを持っているので、私の質問はどこContext.Userを設定するための正しい場所があり、ありますこのカスタムユーザーのインスタンスに?カスタム認可属性が必要ですか?もしそうなら、どのように見えますか?
これでどのように最後に取り組みましたか?私はこれに似た何かをやっている初期の段階です。 – ETFairfax
私は同じボートに乗っています、私は仕事をするための拡張メソッドを作成する準備がほぼ整っています! –