System.Web.HttpContext.User オブジェクト (ASP.NET/VB.NET) を拡張して、Name 以外のフィールドが含まれるようにしたいと考えています。System.Security.Principal.GenericPrincipal クラスを継承するオブジェクトを作成できることは理解していますが、それを使用可能な方法で Current.User オブジェクトに格納するにはどうすればよいでしょうか。つまり、次のようなことができますCurrent.User.UserID
。
これまでのところ、これを達成するために | を使用して厄介な回避策を作成しました。User.Name プロパティで区切られた文字列を分割してから分割しますが、ばかげています。
助言がありますか?
ありがとう!
編集:私は無駄に次のことを試みました:
Imports System.Security.Principal
Public Class CurrentUser : Inherits GenericPrincipal
Private _totalpoints As Integer
Private _sentencecount As Integer
Private _probationuntil As DateTime
Public ReadOnly Property TotalPoints() As Integer
Get
Return _totalpoints
End Get
End Property
Public ReadOnly Property SentenceCount() As Integer
Get
Return _sentencecount
End Get
End Property
Public ReadOnly Property ProbationUntil() As DateTime
Get
Return _probationuntil
End Get
End Property
Public Sub New(ByVal principle As IIdentity, ByVal roles() As String, _
ByVal points As Integer, ByVal sentences As Integer, ByVal probationTil As DateTime)
MyBase.New(principle, roles)
_totalpoints = points
_sentencecount = sentences
_probationuntil = FixDBNull(probationTil)
End Sub
End Class
Application_AuthenticateRequest
次のように Global.asax 関数でオブジェクトを設定します。
HttpContext.Current.User = New CurrentUser(User, userRoles, _
points, sentenceCount, probationUntil)
次のように、オブジェクトが必要な場所に直接キャストします。
Dim thisUser As CurrentUser = DirectCast(Current.User, CurrentUser)
私もCTypeを試しましたが、うまくいきませんでした...私のエラーは
[InvalidCastException: タイプ 'System.Security.Principal.GenericPrincipal' のオブジェクトをタイプ 'myProject.CurrentUser' にキャストできません。]
私はここで私の心を失っています... :(みんなありがとう...
誰でも?