私は、この最も簡単な形式でフォーム認証を使用する古いMVC5アプリケーションを持っています。 web.configに保存されているアカウントは1つだけで、ロールなどはありません。
<authentication mode="Forms">
<forms loginUrl="~/Login/Index" timeout="30">
<credentials passwordFormat="Clear">
<user name="some-user" password="some-password" />
</credentials>
</forms>
</authentication>
ログインルーチンは単に呼び出します
FormsAuthentication.Authenticate(name, password);
以上です。 asp.netコアに似たようなものがありますか?
それはそれほど単純ではありません:)
Startup.csで、メソッドを構成します。
app.UseCookieAuthentication(options =>
{
options.AutomaticAuthenticate = true;
options.AutomaticChallenge = true;
options.LoginPath = "/Home/Login";
});
保護するリソースを保護するために、Authorize属性を追加します。
[Authorize]
public IActionResult Index()
{
return View();
}
Home ControllerのLogin Postアクションメソッドで、次のメソッドを記述します。
var username = Configuration["username"];
var password = Configuration["password"];
if (authUser.Username == username && authUser.Password == password)
{
var identity = new ClaimsIdentity(claims,
CookieAuthenticationDefaults.AuthenticationScheme);
HttpContext.Authentication.SignInAsync(
CookieAuthenticationDefaults.AuthenticationScheme,
new ClaimsPrincipal(identity));
return Redirect("~/Home/Index");
}
else
{
ModelState.AddModelError("","Login failed. Please check Username and/or password");
}
参照用のgithubリポジトリは次のとおりです。 https://github.com/anuraj/CookieAuthMVCSample
Anurajの答えに追加するために、多くのクラスが.Net Core 2で非推奨になりました。参考までに:
Startup.cs-ConfigureServicesで:
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(o => o.LoginPath = new PathString("/account/login"));
Startup.cs-構成中:
app.UseAuthentication();
アカウント/ログインコントローラーメソッド/どこで認証を行う場合でも:
var claims = new[] { new Claim(ClaimTypes.Name, "MyUserNameOrID"),
new Claim(ClaimTypes.Role, "SomeRoleName") };
var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
await context.SignInAsync(
CookieAuthenticationDefaults.AuthenticationScheme,
new ClaimsPrincipal(identity));
// Do your redirect here