Page tree
Skip to end of metadata
Go to start of metadata

1.说明

       在第三方系统中编写 JS 脚本实现登录,假设目标登录页面为 http://localhost:18080/smartbi/vision/index.jsp,效果如下。

 

       

2.具体操作步骤

       1、编写JS脚本实现登录,核心脚本代码如下所示,surl为Smartbi登录成功后自动根据参数跳转的地址,furl是Smartbi登录失败后自动根据参数跳转的地址。

<form method="POST" id="formLogin" onsubmit="go();return false">
	<p>用户:<input type="text" name="user" size="20" value="admin"></p>     
	<p>密码:<input type="text" name="password" size="20" value="manager"></p> 
 	<p>登录成功后的跳转地址:<input type="text" name="surl" size="20" value="manager"></p> 
 	<p>登录失败后的跳转地址:<input type="text" name="furl" size="20" value="manager"></p>     
	<p><input type="submit" value="确定" name="B1"></p> 
</form> 
function go() {
	formLogin.action = "http://localhost:18080/smartbi/vision/login.jsp"; 
    formLogin.user.value = "admin"; 
 	formLogin.password.value = "manager";  	
 	formLogin.surl.value = " "; // 登录成功后的跳转地址;若该地址为外部链接,需要包含协议名,如以 http:// 开头
    formLogin.furl.value = " "; // 登录失败后的跳转地址
    formLogin.submit(); 
    return true; 
}

       2、前端登录后,需要有相应的注销代码,核心注销代码如下。

<form method="POST" id="formLogout" onsubmit="go();return false">
 	<p>注销成功后的跳转地址:<input type="text" name="surl" size="20" value="manager"></p> 
 	<p>注销失败后的跳转地址:<input type="text" name="furl" size="20" value="manager"></p>     
	<p><input type="submit" value="确定" name="B1"></p> 
</form> 
function go() {
	formLogout.action = "http://localhost:18080/smartbi/vision/logout.jsp"; 
 	formLogout.surl.value = " "; // 注销成功后的跳转地址 为空时自动跳转到smartbi的index.jsp
    formLogout.furl.value = " "; // 注销失败后的跳转地址 为空时自动跳转到smartbi的index.jsp
    formLogout.submit(); 
    return true; 
}

       3、gif演示示例的源码请参考:在页面中使用Form登录.rar

注意事项

1. 若服务端未对传入的跳转url变量进行检查和控制,则可能会有人恶意伪造假地址,从而诱导用户跳转到恶意网站上。

因此,用户通过在 Smartbi 的“高级设置”中修改以下配置项“可重定向的URL配置",对furl以及surl的格式进行限制,跳转链接必须得符合预先设定的匹配规则。

例如,设置"equal"的值为“http://www.baidu.com”,表示当跳转链接等于符合该值时允许访问。

# 可重定向的URL配置
# 初始值({"startWith":"","equal":""}),表示允许跳转到任意外部路径
# startWith:多个URL以','分隔,表示允许跳转到以其开头的外部路径
# equal:多个URL以','分隔,表示允许跳转到URL指定的外部路径
REDIRECTABLE_URL_CONFIGURATION={"startWith":"","equal":"http://www.baidu.com"}

效果如下: