요청 설정 방법.양식을 사용하지 않을 때 true로 인증됨인증.로그인 페이지에서 리디렉션하시겠습니까?
양식 인증을 사용하고 있으며 인증을 위해 서버에 Aajx 요청을 보냅니다.json 결과를 바탕으로 고객은 어디로 가야 할지, 무엇을 해야 할지 결정합니다.양식을 사용하지 않는 이유입니다.인증.Ajax/json 응답을 방해하지 않도록 로그인 페이지에서 리디렉션합니다.
이 경우 요청합니다.IsAuthenticated는 구성원 자격으로 사용자를 검증한 후에도 false를 반환합니다.사용자 확인.그런 다음 쿠키를 설정합니다.
FormsAuthentication.SetAuthCookie(username, false);
두 번째 매개 변수인 영구 쿠키는 거짓이지만 쿠키는 브라우저 세션에서 여전히 유효합니다.
요청하는 방법을 알고 있습니다.양식을 사용하지 않고 인증된 작업입니까?인증.로그인 페이지에서 리디렉션하시겠습니까?
요청에 대한 현재 보안 주체를 업데이트해야 합니다.전화할 때Response. Redirect(...)
새 요청이 수행되고 보안 주체가 다시 초기화되고 요청됩니다.IsAuthenticated는 사용자의 경우 true를 반환합니다.FormsAuthentication.RedirectFromLoginPage
내부 전화Response. Redirect(...)
다음과 같이 현재 요청에 대한 보안 주체를 수동으로 갱신할 수 있습니다.
public void RenewCurrentUser()
{
System.Web.HttpCookie authCookie =
System.Web.HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
FormsAuthenticationTicket authTicket = null;
authTicket = FormsAuthentication.Decrypt(authCookie.Value);
if (authTicket != null && !authTicket.Expired)
{
FormsAuthenticationTicket newAuthTicket = authTicket;
if (FormsAuthentication.SlidingExpiration)
{
newAuthTicket = FormsAuthentication.RenewTicketIfOld(authTicket);
}
string userData = newAuthTicket.UserData;
string[] roles = userData.Split(',');
System.Web.HttpContext.Current.User =
new System.Security.Principal.GenericPrincipal(new FormsIdentity(newAuthTicket), roles);
}
}
}
양식 인증.SetAuthCookie
방법 제공된 사용자 이름에 대한 인증 티켓을 만들어 응답의 쿠키 컬렉션 또는 쿠키 없는 인증을 사용하는 경우 URL에 추가합니다.
참조: msdn
양식 인증 제어 흐름을 확인합니다.인증 쿠키는 응답 쿠키 컬렉션으로 설정되며 http 프로토콜 수준에서 확인할 수 있어야 합니다(예: FireCookie 또는 Fiddler2를 사용하여 확인).
구성원 자격은 사용자 이름/암호만 확인합니다.회원 자격도, 회원 자격도 없습니다.SetAuthCookie()
현재 요청을 수정합니다.그들은 쿠키를 발신자에게 다시 보낼 것으로 예상하고, 다음 요청은 다음과 같은 속성입니다.IsAuthenticated
true로 반환됩니다.
사용자 정의를 사용하여 이러한 자동 프로세스를 재정의하고 확장할 수 있습니다.IIdentity
그리고.IPrincipal
필요한 경우 인증 이벤트에 연결합니다.
ASP와 함께 양식 인증 사용에 대해서도 살펴보십시오.NET AJAX
POST 후 리디렉션하는 것이 최선의 방법이며 올바른 솔루션으로 간주되어야 합니다.
경우에 따라 인증 요청 범위 내에서 사용자가 인증되었는지 여부를 확인해야 할 수 있습니다(예: 인증이 수행된 후 다른 요청과 공유된 추가 로직을 실행하는 경우).
이 경우 요청 값을 재설정할 수 있습니다.다음 코드로 인증됨:
// set the forms auth cookie
FormsAuthentication.SetAuthCookie(username, createPersistentCookie);
// reset request.isauthenticated
var authCookie = System.Web.HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
if (authTicket != null && !authTicket.Expired)
{
var roles = authTicket.UserData.Split(',');
System.Web.HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(new FormsIdentity(authTicket), roles);
}
}
여기 게시물 참조: http://abadjimarinov.net/blog/2010/01/24/RenewUserInTheSameRequestInAspdotNET.xhtml
우리는 이것을 간단하게 사용할 수 있습니다.
양식 인증.SetAuthCookie(사용자 이름, true);
언급URL : https://stackoverflow.com/questions/2105391/how-to-set-request-isauthenticated-to-true-when-not-using-formsauthentication-re
'programing' 카테고리의 다른 글
jQuery에서 확인란 값을 검색하는 방법 (0) | 2023.08.15 |
---|---|
MySQL 결정론적 함수 결과 캐시를 지우는 방법은 무엇입니까? (0) | 2023.08.15 |
'Invoke-WebRequest' 용어가 cmdlet의 이름으로 인식되지 않습니다. (0) | 2023.08.15 |
압축 보관에서 폴더를 제외하려면 어떻게 합니까? (0) | 2023.08.15 |
"&(s->var)" vs "&s->var"에서처럼 구조체 포인터에서 구조체 멤버의 주소를 가져오려면 괄호가 필요합니까? (0) | 2023.08.15 |