本帖最后由 spiral 于 2013-6-18 13:47 编辑
Q:麻烦给一个用cookie单点登录的例子。
A:您好,我这边给您提供一个关于web工程和myApps平台的单点登录demo.其中以web工程为登录界面。
由于IE的安全机制不支持cookie跨域的单点登录方式。如果需要跨域实现单点登录建议您用平台提供的Cas服务器或者AD单点登录方式。
第一步:平台单点登录的配置。如下图所示:
第二步:web工程的jsp页面内容:
<%@page import="javax.servlet.http.Cookie"%>
<%@page import="javax.servlet.http.*"%>
<%@page import="javax.servlet.*"%>
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@page import="sun.misc.BASE64Encoder"%>
<%@page import="sun.misc.BASE64Decoder"%>
<%
BASE64Encoder encoder = new sun.misc.BASE64Encoder();
BASE64Decoder decoder = new BASE64Decoder();
String domainname = "111111";//企业域名
String account = "111111";//用户账户
String password = "111111";//密码
//单点登录模式平台读取用户信息需要解密,因而存储用户信息也需要加密
Cookie cookiet = new Cookie("obpmDomainName",
(new sun.misc.BASE64Encoder()).encode(
domainname.trim().getBytes()).toString());
Cookie obpmLoginAccount = new Cookie("obpmLoginAccount",
(new sun.misc.BASE64Encoder()).encode(
account.trim().getBytes()).toString());
Cookie obpmLoginPassword = new Cookie("obpmLoginPassword",
(new sun.misc.BASE64Encoder()).encode(
password.trim().getBytes()).toString());
//设置cookie的生命周期
cookiet.setMaxAge(60 * 60 * 24);
obpmLoginAccount.setMaxAge(60 * 60 * 24);
obpmLoginPassword.setMaxAge(60 * 60 * 24);
//设置cookie的路径
cookiet.setPath("/");
obpmLoginAccount.setPath("/");
obpmLoginPassword.setPath("/");
//添加cookie
response.addCookie(obpmLoginAccount);
response.addCookie(obpmLoginPassword);
response.addCookie(cookiet);
%>
<title>demo</title>
</head>
<body>
<a href="http://localhost:8080/obpm/portal/login/sso.action">myApps平台主页</a>
</body>
</html> |