私はログインのデフォルトの実装を使用して、私のWeb APIをサイトのAccountControllerを持っている:偽造防止トークンウェブAPI 2
// POST: /Account/Login
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
これは、ウェブのため正常に動作しますが、私は、クライアントを使用している場合appのようにUWP
またはXamarin
のようになりましたWebView
を使用せずにログインしたい場合はWeb Api
がウェブに結合されているように見えるので、これは問題になります。anti-forgery
トークンがビューで生成され、私が見ているモバイルアプリのように、クライアントアプリケーションが単にテキストボックスとログインボタンを使用するようにしたいとしましょう。彼らは通常、WebView
をポップアップしません。
偽造防止トークンなしでユーザーにログインする別の方法を作成する唯一の方法はありますか?それは潜在的なセキュリティリスクはもちろんのこと、ちょっと乱雑でDRY原則にはうまくいかないようです。
は、ログインページのGETを行うと、トークンをつかむし、ログインページにあなたのPOSTを行う、あなたが得たトークンを返送してくださいています。 –