在我的application.cfc文件的“ OnRequestStart”方法中,我像这样设置session.remote用户:
cfset session.remoteuser = "#right(cgi.REMOTE_USER,7)#" />
这对特定用户来说效果很好,现在我正试图创建一个管理员视图,管理员可以在其中输入特定用户ID并像他们一样查看该页面。我的管理视图页面中包含以下脚本:admin.cfm
<form action="" method="post">
<input type="text" name="viewasUser"><button type="submit" cname="viewas">View As</button>
</form>
在我的application.cfc onrequeststart方法中,我添加了此逻辑来切换session.remoteuser,它不起作用:
<cfif structkeyexists(form,"viewas")>
<cfset session.remoteuser = '#form.viewasuser#'>
<cfelse>
<cfset session.remoteuser = "#right(cgi.REMOTE_USER,7)#" />
</cfif>
基于远程用户,它将在其余逻辑中切换视图,但是此if语句不起作用,并且不会更改会话。remoteuser,
我在做什么错?
这看起来很有趣。
<cfif structkeyexists(form,"viewas")>
<cfset session.remoteuser = '#form.viewasuser#'>
<cfelse>
<cfset session.remoteuser = "#right(cgi.REMOTE_USER,7)#" />
</cfif>
我做了类似的事情,但是看起来有些不同
rc
是url和表单合并在一起
//控制器代码函数模拟(rc){如果(IsUserInRole(“ admin” && rc.keyExists(“ id”){//确保id也很好loginService.doImpersonate(rc.id);}
//型号代码函数doImpersonate(必需的数字ID){
var Account (EntityLoadByPK("Users", arguments.id));
// all kinds of error checking
cflogout();
cfloginuser(
name = Account.getName(),
password = hash(now),
roles = Account.getRoles()
);
}