問題タブ [genericprincipal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - System.Web.HttpContext.User を拡張する
System.Web.HttpContext.User オブジェクト (ASP.NET/VB.NET) を拡張して、Name 以外のフィールドが含まれるようにしたいと考えています。System.Security.Principal.GenericPrincipal クラスを継承するオブジェクトを作成できることは理解していますが、それを使用可能な方法で Current.User オブジェクトに格納するにはどうすればよいでしょうか。つまり、次のようなことができますCurrent.User.UserID
。
これまでのところ、これを達成するために | を使用して厄介な回避策を作成しました。User.Name プロパティで区切られた文字列を分割してから分割しますが、ばかげています。
助言がありますか?
ありがとう!
編集:私は無駄に次のことを試みました:
Application_AuthenticateRequest
次のように Global.asax 関数でオブジェクトを設定します。
次のように、オブジェクトが必要な場所に直接キャストします。
私もCTypeを試しましたが、うまくいきませんでした...私のエラーは
[InvalidCastException: タイプ 'System.Security.Principal.GenericPrincipal' のオブジェクトをタイプ 'myProject.CurrentUser' にキャストできません。]
私はここで私の心を失っています... :(みんなありがとう...
誰でも?
wpf - WPFのMy.User.IsAuthenticatedバグ
正確に説明する方法はわかりませんが、基本的に私の問題を再現する方法は次のとおりです。
- VB.NETでWPFWindowsアプリケーションプロジェクトを作成します(作成しないでください。信じられない場合を除いて、これを読み続けてください...)
- ウィンドウのヘッダーをクリックして、Window.Loadedイベントハンドラーを作成し、そこに移動します。
- イベントハンドラに以下を追加します。
My.User.CurrentPrincipal = New GenericPrincipal( _
New GenericIdentity("username"), Nothing)
Dim authenticated = My.User.CurrentPrincipal.IsAuthenticated
MessageBox.Show(authenticated) 'True' - ウィンドウデザイナに戻り、Window1にボタンを追加します。
- ボタンをクリックしてClickイベントハンドラーを作成し、そこに移動します。
- 次のコンテンツを追加します。
Dim authenticated = My.User.CurrentPrincipal.IsAuthenticated
MessageBox.Show(authenticated) 'False' - アプリケーションを実行し、結果を確認します
- なぜ今それは間違っているのか!?!?
更新:http://connect.microsoft.com/WPF/feedback/ViewFeedback.aspx?FeedbackID = 513731でバグを報告しました。投票するか、回避策を投稿してください。そうしたら、事前に感謝します。
どんな回避策も歓迎されます!
asp.net-mvc - ASP.NET MVCでHttpContext.Userに値を割り当てるにはどうすればよいですか?
私は以下のようなコントローラーを書きます:
ログイン後、他のコントローラーのUser.Identity.Nameでユーザー名を取得できます。ただし、User.IsInRole( "role1")は常にfalseを返します。
どうすればユーザーに値を割り当てることができますか、メンバーシップを使用したくありません...
asp.net - HttpContext ユーザー値は独自に変更されますか?
私は ASP.Net 2.0 アプリケーションに取り組んでおり、HttpContext ユーザーに関する奇妙な問題が発生しています。特定のページ/ディレクトリに移動すると、それ自体が変化しているように見えます。
すべてのページはベース ページから継承します。その基本ページの Page_Load() メソッドで、承認チェックを実行して、ユーザーがアクセスしようとしているページを表示できるかどうかを確認します。
このコードでチェックするユーザーを取得します。
この珍しいディレクトリに移動すると、User の値は私ではなく、聞いたことのない別のユーザー名です。このユーザー名はこれらのページを表示する権限がないため、承認は失敗します。
この不思議なディレクトリは仮想 Webではなく、私たちの Web サイトの通常のディレクトリですが、独自の Web.Config ファイルがあることに気付きました。それがここでのトラブルの原因だと思います。
私の質問は、このディレクトリに移動したときに User 値を変更しているものを特定する際に、これをさらに調査するにはどうすればよいですか?
[編集] -- このディレクトリ内の web.config ファイルを削除または名前変更すると、ユーザーの値は変更されなくなります。ただし、以下のコメントで述べたように、そこには値がないため、単にファイルの存在に基づいて Principal.User の値がどのように変化するかわかりませんか? もちろん、私が見逃しているものでなければなりません。
c# - http.context.userとthread.currentprincipalの違いと、それらをいつ使用するか。
最近、VisualStudio2008でasp.netWebアプリを実行する際に問題が発生しました。「メンバー...customUserPrincipalのタイプが解決されていません」というエラーが表示されます。さまざまなディスカッショングループを追跡すると、Thread.CurrentPrincipalに対してカスタムプリンシパルを割り当てるときにVisualStudioのWebサーバーに問題があるようです。
私のコードでは、今は...を使用しています。
エラーが発生したことをうれしく思いますが、「プリンシパルを設定するこれら2つの方法の違いは何ですか?」という疑問が生じます。違いに関連する他のスタックオーバーフローの質問がありますが、2つのアプローチの詳細には触れていません。
私は次の壮大なコメントを持っているが彼の主張を裏付ける説明がない魅力的な投稿を1つ見つけました...
すべてのWeb(ASPX / ASMX)アプリケーションにHttpConext.Current.Userを使用します。
winForms、コンソール、Windowsサービスアプリケーションなどの他のすべてのアプリケーションには、Thread.CurrentPrincipalを使用します。
security / dot.netの達人の誰かが、このテーマに光を当てることができますか?
c# - MVC を使用して、古い ID を保持しながら、GenericPrincipal でプロキシ ユーザーを設定します。
一部のユーザーが他のユーザーとしてプロキシすることを許可するサイトがあります。そうすれば、サイト全体が、自分がプロキシしているユーザーであるかのように見えるはずです。これを行うには、現在のユーザー オブジェクトを変更します
このコードは私にとってはうまくいきます。
サイトでは、プロキシするために、ユーザーはドロップダウンで値を選択し、それを _layout ファイルでそのままレンダリングして、すべてのページに表示します。
SetProxyUsers ビューは次のようになります。
}
このためのコントローラー アクションは次のようになります。
これはすべて機能します (次にやりたいことを象徴するためにここに入れている originalUserID 変数を除いて)。
私の問題は、ドロップダウン リストの値がログイン ユーザーに基づいていることです。したがって、プロキシを使用してユーザーを変更するときは、プロキシ ドロップダウン リストの値も変更します (「新しい」ユーザーがプロキシを許可されていない場合は非表示にするか、「新しい」ユーザーの使用可能なプロキシ ユーザーのリストを表示します)。 )。
この選択リストを変更しないでおく必要があります。元のユーザーの ID を保存するにはどうすればよいですか? セッション変数に保存することもできますが、潜在的なタイムアウトの問題を台無しにしたくないので、これは最後の手段です。
助けてください。質問に不明な点がある場合はお知らせください。
アップデート
HttpContext
投稿ごとに が設定されていることに気づきませんでした。私はこれまでこの種の作業を実際に行ったことがなく、何らかの理由でセッション全体の値を設定していると思い込んでいました (ばかです、私は知っています)。ただし、Windows認証を使用しています。ユーザーをより永続的に (ブラウザが開いている限り) 変更するにはどうすればよいですか? Windows を認証モードとして使用しているため、FormAuthentication Cookie を使用できないと思いますよね?
c# - C# で自動生成されるスレッドの GenericPrincipal を設定する方法
私はアプリケーションにコードを持っています
しかし問題は、私のアプリケーションがいくつかのスレッドを実行すると自動的に作成されますが、原則は上記のものと同じではありません。それを設定する方法は?
c# - ベースおよび派生クラスのPrincipalPermissionにORを適用する方法
基本クラスがあります。
そして派生したもの。
「開発者」権限を持つユーザーにDerivedのオブジェクトを作成させたい。しかし、基本クラスには管理者の権限があるため、私はできません。
管理者は、すべての派生クラスのオブジェクトを作成できる必要があります。だから私はadminの基本クラスに権限を入れたいと思います。
この問題をどのように分類できますか。