我们正在设置单一登录系统,以处理我们不同系统(几乎所有系统都不是DNN系统)之间的身份验证和授权。
这个想法是,中央身份验证系统会为用户提供一个链接,使用身份验证令牌将其重定向到DotNetNuke系统。然后,我需要获取该身份验证令牌,验证它是否合法,如果是,则将该用户登录到DNN。这个工作流程的问题是我不知道用户的密码。
以前,当我创建自定义登录界面时,我通过调用以下方式登录用户:
var portalSettings = PortalSettings.Current;
UserController.UserLogin(portalSettings.PortalId, username, password, string.Empty, portalSettings.PortalName, ip, ref loginStatus, true);
如果我不知道DNN / Asp.net表单身份验证系统中的密码是什么,这显然不起作用。
由于这不是一个新系统,但是目前在没有SSO的情况下在生产中使用的系统,我不能只将每个人的密码设置为“pass1234”并要求他们仅通过SSO方法登录。
如何在不知道确切密码的情况下告诉DotNetNuke以用户身份登录?
答案 0 :(得分:3)
UserController还有一个额外的重载,它带有一个“UserInfo”对象。
使用UserController.GetUserByName
从系统中获取实际用户,然后您可以将该对象传递给Userlogin方法,您就可以开始使用了!