電子メールのリンクをクリックすると自動的にログインします。 example.com/action?_ul=blah-guid
。 '_ul'を検出して自動的にユーザーにログインします。 urlはさまざまなもののうちの1つになる可能性があるので、クエリ文字列paramが存在するかどうかを検出し、この特殊キーを使用して自動的にログインします。URLクエリ文字列トークンを使用した自動ログイン
これまで、以前のIDプロバイダGlobal.asax.cs
でApplication_BeginRequest
を使用してこれを行っています。
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (Request["_ul"] != null)
{
var userService = new UserService();
userService.QuickLogin(Request["_ul"]);
}
}
しかし、このプロジェクトでは、我々はAsp.Netアイデンティティを使用していて、それがOwinStartup
、このポイントの後に起こっているとエラーを投げているようだ:
No owin.Environment item was found in the context.
これは、初期化の中で起こりますサービス:
public UserService()
{
signInManager = HttpContext.Current.GetOwinContext().Get<ApplicationSignInManager>();
}
私はActionFilter
を使用しようとしましたが、これは認証後に発生します。
私はAsp.Net IDでこれを行う方法がわかりませんが、通常のフォーム認証を保持したいと思いますが、特定のクエリ文字列値があるかどうかを検出し、現在ログインしている場合はログアウトしてからログ特別なキーを使用しています。
この追加のログインチェックを行う正しい方法は何ですか?