2012-07-20 4 views
4

사용자가 프런트 엔드에서 로그 오프 할 때 발생하는 이벤트가 있으며 해당 이벤트를 사용하여 사용자를 특정보기 또는 페이지로 리디렉션 할 수 있습니까? 로그 아웃 한 후 "사용자가 성공적으로 로그 오프했습니다."라는 메시지가 나타납니다.과수원 CMS : 로그 아웃 (로그 오프) 확인 페이지

답변

7

은 언제나처럼, 과수원 :이 작업을 수행하기 위해 하나 개 이상의 방법이

방법 1 : 로그 오프하면, 당신이 작업 방법에 리디렉션됩니다

사용자의 모양을 재정의 Orchard.Users.AccountControllerLogOff이며, 이는 returnUrl 인수를 취합니다. 로그 아웃 링크가 포함 된 모양은 ~/Core/Shapes/Views/User.cshtml이지만, Views/User.cshtml이라는 테마에서 사본을 만들면 모양을 바꿀 수 있습니다 (또는 모양 추적 모듈을 사용하여이 모양을 찾고 대체 모양을 만들 수 있습니다). 당신이 다음 할 일은 당신의 사본에서

@Html.ActionLink(T("Sign Out").ToString(), "LogOff", new { Controller = "Account", Area = "Orchard.Users", ReturnUrl = "/My/LogOff/Confirmation/Page" }, new { rel = "nofollow" }) 

방법 2로 변경

@Html.ActionLink(T("Sign Out").ToString(), "LogOff", new { Controller = "Account", Area = "Orchard.Users", ReturnUrl = Context.Request.RawUrl }, new { rel = "nofollow" }) 

입니다 : IUserEventHandler보다 동적 인 요구 사항에 대한

, 당신은을 구현할 수 Orchard.Users.Events.IUserEventHandler 인터페이스, LoggedOut 메서드가 호출 될 때 확인 페이지로 리디렉션 ed :

public class LoggedOutRedirect : IUserEventHandler 
{ 
    private readonly IHttpContextAccessor _httpContext; 
    public LoggedOutRedirect(IHttpContextAccessor httpContext) 
    { 
     _httpContext = httpContext; 
    } 

    public void LoggedOut(IUser user) 
    { 
     _httpContext.Current().Response.Redirect("http://www.google.com/"); 
    } 

    public void Creating(UserContext context) { } 
    public void Created(UserContext context) { } 
    public void LoggedIn(IUser user) { } 
    public void AccessDenied(IUser user) { } 
    public void ChangedPassword(IUser user) { } 
    public void SentChallengeEmail(IUser user) { } 
    public void ConfirmedEmail(IUser user) { } 
    public void Approved(IUser user) { } 
} 

희망 하시겠습니까?

+0

어디에서 방법 2를 삽입합니까? 고맙습니다. – user1477388

+1

자, 모듈 중 하나에 새 클래스 파일을 만들고 위의 코드를 추가합니다. 컴파일을 위해 다른 모든 IUserEventHandler 메서드에 빈 구현을 추가해야합니다. – mdm

+0

"any"모듈 폴더에 "class.cs"라는 새 파일을 넣었습니까? 나는 빈 구현이 무엇인지 이해하지 못한다. 나에게 연결할 수있는 예제 나 튜토리얼이 있습니까? 감사. – user1477388