4
当用户注销前端时是否会触发事件,以及如何使用该事件将用户重定向到特定视图或页面?我希望用户在退出后收到一条消息,说明“您已成功注销”。Orchard CMS:注销(注销)确认页面
当用户注销前端时是否会触发事件,以及如何使用该事件将用户重定向到特定视图或页面?我希望用户在退出后收到一条消息,说明“您已成功注销”。Orchard CMS:注销(注销)确认页面
与往常一样,没有与乌节:)做到这一点的方法不止一种
方法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" })
到
@Html.ActionLink(T("Sign Out").ToString(), "LogOff", new { Controller = "Account", Area = "Orchard.Users", ReturnUrl = "/My/LogOff/Confirmation/Page" }, new { rel = "nofollow" })
方法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) { }
}
希望它有帮助!
我在哪里插入方法二?谢谢。 – user1477388 2012-07-23 12:34:08
那么,你会在你的一个模块中创建一个新的类文件并添加上面的代码。您还需要为所有其他IUserEventHandler方法添加空实现以供它编译。 – mdm 2012-07-23 13:02:33
我只是在“任何”模块文件夹中放入一个名为“class.cs”的新文件?我也不明白什么是空的实现。你有任何可以链接到我的例子或教程吗?谢谢。 – user1477388 2012-07-23 13:07:16