Orchard CMS:退出(注销)确认页面

use*_*388 4 asp.net-mvc orchardcms

是否有一个事件在用户注销前端时被触发,我如何使用该事件将用户重定向到特定的视图或页面?我希望用户在退出后收到一条消息,说明"您已成功注销".

mdm*_*mdm 7

和往常一样,Orchard有不止一种方法可以做到这一点:)

方法1:覆盖用户形状

当您注销时,您将被重定向到Orchard.Users.AccountController被调用的操作方法LogOff,该方法接受一个returnUrl参数.包含注销链接的形状在下面,~/Core/Shapes/Views/User.cshtml但您可以通过在主题中创建它的副本来覆盖它Views/User.cshtml(或使用形状跟踪模块来查找此形状并创建替代).

在你的副本中你所要做的就是改变

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

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

方法2:IUserEventHandler

对于更动态的需求,您可以实现Orchard.Users.Events.IUserEventHandler接口,在LoggedOut调用方法时重定向到您的确认页面:

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) { }
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!