管理者が他のユーザーを禁止できるIdentity 2.0を使用してアプリケーションを作成しています。彼らがそれらを禁止するとき、彼らはサインアウトされる(彼らが次の行動/要求をするとき)。 UpdateSecuritStampAsyncがログアウト一部を行いASP.NET MVCユーザーがログアウトしたときのメッセージを表示
public async Task<ActionResult> Block(ApplicationUser formuser, string id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var user = await UserManager.FindByIdAsync(id);
user.DeleteDate = DateTime.Now;
user.IsConfirmed = false;
await UserManager.UpdateSecurityStampAsync(user.Id);
return RedirectToAction("Index");
}
:
は、ここに私の禁止行為です。また、Startup.Auth.cs UseCookieAuthenticationを挿入すると、ユーザーがログアウトするように変更されているので、それが良いと思います(重要なものを追加できない場合は、コメントを書いて追加します)
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(0),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
デフォルトのTimeSpanを30分から0に変更しました(これは間違いかもしれませんが動作します)。 このスレッドの主な質問は、ユーザーがログアウトしたときにメッセージを表示する場所を作成したいのですが、どうすればよいでしょうか? (管理者がユーザーをブロックすると、ユーザーがページをリロードした後、悪用などでブロックされたというメッセージが表示されます)
しかし、このメソッドは数日間ロックアウトしますが、私のメソッドは誰かがブロック解除するまでブロックします(実際にどれくらい時間がかかるか分からないため)。そのようなことをしているあなたに問題がありますか? – HighSepton
誰かを無期限にロックしておき、いつでもロックを解除することができます。ただし、 'forDays'はヌル可能です。既に組み込まれているので、ホイールを再発明しようとしないことをお勧めします。 –
大丈夫、まあ、私はそれを変更しようとします。しかし、これは本当に私の質問に答えるものではない。 – HighSepton