, 당신은 주장 이러한 저장하거나 저장하는 자신의 테이블을 만들어야 하나. 소유권 주장은 이미 Identity로 작성되었으므로 가장 쉽습니다.
OnValidateIdentity
방법이 CookieAuthenticationProvider
인 것을 Startup.Auth.cs
으로 확인하십시오. 현재 OnValidateIdentity
메서드가 SecurityStampValidator
으로 호출되므로 세션 ID를 먼저 확인한 다음 원래 보안 스탬프 유효성 검사기를 호출하는 래퍼 메서드를 작성해야합니다. 예를 들어, 당신은 Startup
클래스에 이러한 방법을 추가 할 수 있습니다 _validate
그냥 원래의 방법 validate
입니다
private Func<CookieValidateIdentityContext, System.Threading.Tasks.Task> _validate=SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager));
private async Task validate(CookieValidateIdentityContext context)
{
var usermanager = context.OwinContext.GetUserManager<ApplicationUserManager>();
var claims = await usermanager.GetClaimsAsync(context.Identity.GetUserId());
//instead of setting to true, add your session validation logic here
bool sessionIsValid=true;
if (!sessionIsValid) {
context.RejectIdentity();
context.OwinContext.Authentication.SignOut(context.Options.AuthenticationType);
}
await _validate(context);
}
또한 세션 ID를 확인 새로운 방법입니다.
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 = validate
}
});
난 당신이 데이터베이스에서 매번 주장을 확인해야합니다 생각이 일을하려면,하지만 난 usermanager.GetClaimsAsync
이 궁극적으로이 작업을 수행 할 것으로 예상 : 그런 다음 app.UseCookieAuthentication
코드는 다음과 같은 새로운 validate
방법을 참조합니다.
확실하지 않거나 도움이 될 것입니다. MVC 프로젝트를 만들 때 인증 방법을 설정할 수있는 옵션이 있습니다. 예제 코드를 생성해야합니다. 나는 당신의 사용자 트랙을 유지하는 상황에 대해 어느 정도 만족해야한다. – Dragonvil
ASP.NET ID를 통해 나는 app.UseCookieAuthentication (new CookieAuthenticationOptions {.... )을 사용합니다. 내 sessionIds의 유효성을 검사하려면이 옵션을 어떻게 사용해야합니까? – spiros
이전 답변에서 언급 했어야 할 사항 : 어디에서나 사용자에게 서명하고 싶은 경우 AspNetUser 테이블에서 보안 스탬프의 값을 변경하기 만하면됩니다. 'SecurityStampValidator'는 auth 쿠키를이 값과 비교하여 검사하고, 변경된 경우 서명합니다. – Matthew