2012-07-20 111 views

回答

7

与往常一样,没有与乌节:)做到这一点的方法不止一种

方法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) { } 
} 

希望它有帮助!

+0

我在哪里插入方法二?谢谢。 – user1477388 2012-07-23 12:34:08

+1

那么,你会在你的一个模块中创建一个新的类文件并添加上面的代码。您还需要为所有其他IUserEventHandler方法添加空实现以供它编译。 – mdm 2012-07-23 13:02:33

+0

我只是在“任何”模块文件夹中放入一个名为“class.cs”的新文件?我也不明白什么是空的实现。你有任何可以链接到我的例子或教程吗?谢谢。 – user1477388 2012-07-23 13:07:16