Acumatica:在流程完成后注销用户

时间:2018-01-15 14:29:51

标签: acumatica

我尝试在完成一个进程后注销用户,我尝试使用PXAccess或PXAccessInfo类来执行此操作,但无法找到正确的方法来注销用户。在签署用户时是否还有其他方法可以掩饰?

1 个答案:

答案 0 :(得分:1)

我调整了标准的SignOut代码,因此可以从图形扩展名而不是Aspx.cs网页运行。它等同于此SignOut菜单项:

enter image description here

在此示例中,我将代码放在SOOrderEntry Initialize覆盖中,以便在导航到SalesOrderEntry图时立即注销当前用户。您可以将它放在Action事件处理程序中,但我还没有在PXLongOperation上下文中测试它,该上下文在单独的线程上下文中运行:

public class SOOrderEntry_Extension:PXGraphExtension<SOOrderEntry>
{
    public override void Initialize()
    {
        System.Web.UI.Page page = System.Web.HttpContext.Current.Handler as System.Web.UI.Page;

        if (page != null)
        {
            PX.Data.PXLogin.LogoutUser(PX.Data.PXAccess.GetUserName(), page.Session.SessionID);
            PX.Common.PXContext.Session.SetString("UserLogin", string.Empty);

            string absoluteLoginUrl = PX.Export.Authentication.AuthenticationManagerModule.Instance.SignOut();

            page.Session.Abandon();
            PX.Data.Auth.ExternalAuthHelper.SignOut(System.Web.HttpContext.Current, absoluteLoginUrl);

            PX.Export.Authentication.FormsAuthenticationModule.
            RedirectToLoginPage(PX.Data.Auth.ExternalAuthHelper.SILENT_LOGIN + "=None", true);
        }
    }
}