나는이 문제를 직접 해결해야했기 때문에 검색 결과를 여기에 표시 할 경우 다른 사람들을 위해 게시 할 수 있다고 생각했습니다.
양식 인증을 사용하고 익명 사용자에게 서식을 허용하고 기존 .Net (.aspx) 웹 사이트와 MVC 웹 응용 프로그램간에 자격 증명을 전달하고 지정된 URL로 리디렉션하는 데 필요한 모든 것입니다. 로그인 후.
찾고있는 모든 것을 사용하십시오.
.Net 웹 응용 프로그램 (.aspx)의 가상 디렉터리/가상 응용 프로그램 경로가 Views 디렉터리 외부에 있는지 확인하십시오. 또한 IIS에서 가상 디렉터리/응용 프로그램을 설정했는지 확인하십시오.
사용자를 확인하기 위해 SQL Server 데이터베이스에 Entity Framework 및 ID를 사용했습니다. 당신이 뭔가를해야합니다 당신의 login.aspx 페이지 뒤에 코드에서, 그리고
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<!-- other stuff -->
<system.web>
<authentication mode="Forms">
<forms
loginUrl="login.aspx"
name=".AUTHCOOKIE"
protection="All"
path="/"
domain="your_domain.com"
enableCrossAppRedirects="true"
timeout="60">
</forms>
</authentication>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
<machineKey
validationKey="your validation key"
decryptionKey="your decryption key"
validation="SHA1"
decryption="AES"
/>
<!-- other stuff -->
</system.web>
<location path="/path/to/your/site.css">
<system.web>
<authorization>
<allow users="?"></allow>
</authorization>
</system.web>
</location>
<!-- other stuff -->
</configuration>
:
가상 응용 프로그램/디렉토리 닷넷 (.ASPX) web.config 파일이를 포함 할 필요가있다 :
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
string username = Login1.UserName;
string pwd = Login1.Password;
/* do your authentication here
connect to user store
get user identity
validate your user
etc
*/
if (user != null)
{
FormsAuthentication.SetAuthCookie(username, Login1.RememberMeSet);
System.Web.HttpCookie MyCookie = System.Web.Security.FormsAuthentication.GetAuthCookie(User.Identity.Name.ToString(), false);
MyCookie.Domain = "your_domain.com";
Response.AppendCookie(MyCookie);
Response.Redirect("~/path/to/your/index.aspx");
}
else
{
StatusText.Text = "Invalid username or password.";
LoginStatus.Visible = true;
}
}
이제 MVC 응용 프로그램 웹에 있습니다.설정 파일이 추가
<configuration>
<!-- other stuff -->
<system.web>
<authentication mode="Forms">
<forms
loginUrl="Account/Login"
name=".AUTHCOOKIE"
protection="All"
path="/"
domain="your_domain.com"
enableCrossAppRedirects="true"
timeout="30"/>
</authentication>
<authorization>
<deny users="?"/>
<allow users="*"/>
</authorization>
<machineKey
validationKey="your validation key"
decryptionKey="your decryption key"
validation="SHA1"
decryption="AES"
/>
<!-- other stuff -->
</system.web>
<location path="/path/to/your/site.css">
<system.web>
<authorization>
<allow users="?"></allow>
</authorization>
</system.web>
</location>
<!-- other stuff -->
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="FormsAuthenticationModule"/>
<add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule"/>
<remove name="UrlAuthorization"/>
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule"/>
</modules>
</system.webServer>
<!-- other stuff -->
</configuration>
당신의 MVC AccountController 로그인 방법은 다음과 비슷한 모습이 될 것입니다
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
AuthenticationManager.SignOut();
FormsAuthentication.SignOut();
return RedirectToAction("Login", "Account");
}
을 했나 :
마지막으로, MVC AccountController이 방법을 로그 오프하는 것은 이것이다 이 문제가 해결 되나요? 나는 똑같은 문제를 겪고있다. –
아니요 불행히도 MVC의 기본 양식 인증을 사용하지 않았지만 너무 빨리 기대하고 있습니다.이 문제가 다시 발생하면이 게시물로 돌아갑니다. –