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