当用户从前端退出时,是否有触发事件?我如何使用该事件将用户重定向到特定的视图或页面? 我希望用户在登出后收到一条消息,提示“您已成功退出”。
当用户从前端退出时,是否有触发事件?我如何使用该事件将用户重定向到特定的视图或页面? 我希望用户在登出后收到一条消息,提示“您已成功退出”。
像往常一样,使用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" })
to
@Html.ActionLink(T("Sign Out").ToString(), "LogOff", new { Controller = "Account", Area = "Orchard.Users", ReturnUrl = "/My/LogOff/Confirmation/Page" }, new { rel = "nofollow" })
方法二: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) { }
}