4

ユーザーがフロント エンドからログオフしたときに発生するイベントはありますか?そのイベントを使用してユーザーを特定のビューまたはページにリダイレクトするにはどうすればよいですか? ユーザーがサインアウトした後、「正常にログオフしました」というメッセージが表示されるようにしたいと思います。

4

1 に答える 1

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" })

@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) { }
}

それが役に立てば幸い!

于 2012-07-21T11:03:29.920 に答える