我想簡單的方法來做到這一點將是通過在你的模塊內部實現IUserEventHandler。 創建一個類LogInRedirect並實現一個方法LoggedIn。像這樣:
using System.Web.Mvc;
using Orchard.Mvc;
using Orchard.Security;
using Orchard.Users.Events;
namespace Orchard.Users {
public class LogInRedirect : IUserEventHandler
{
private readonly IHttpContextAccessor _httpContext;
public LoggedOutRedirect(IHttpContextAccessor httpContext)
{
_httpContext = httpContext;
}
public void LoggedIn(IUser user)
{
UrlHelper urlHelper = new UrlHelper(_httpContext.Current().Request.RequestContext);
_httpContext.Current().Response.Redirect(urlHelper.RequestContext.HttpContext.Request.ApplicationPath + "/yourController/yourAction");
}
public void Creating(UserContext context) { }
public void Created(UserContext context) { }
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) { }
public void LoggedOut(IUser user){ }
}
}
奇怪的是,當我使用這個時,菜單中的我的'登錄'鏈接不會更改爲用戶名(帶有下拉和選項註銷)。這是因爲在該代碼中,我檢查了「WorkContext.CurrentUser」。有了這段代碼,該屬性有時爲空。沒有,我沒有問題... – Peter