没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
SSO 简介
SSO 一次登录 处处穿梭
比如校园卡
比如新浪微博 新浪博客,只要登录一次,就可以不用重复登录
SSO Single Sign on,单点登录,保证一个账户在多个系统上实现单一用户的登录
SSO 分类
同域 SSO:web1.x.com web2.x.com web3.x.com 都在 x.com 域名下面
跨域 SSO:微博和新浪位于不同域下面 weibo.com sina.com
SSO 实现步骤和原理
同域 SSO
用户登录之后,需要对用户名和密码进行校验,校验成功之后,如果合法,则需要在服务端
创建 cookie,并将 cookie 作用域设置为/,这样 demo1 和 demo2 都可以访问到该 cookie。
(这里二级域名相同,都是 localhost)
一级域名:abc.com。由一个合法的字符串+域名后缀组成(.com,.net 等)
二级域名:www.abc.com,这里的 www 其实是主机名。二级域名其实就是一级域名下的主机
名。
注意需要在登录表单中有一个隐藏表单,作为登录成功之后,需要转向的是 demo1 页面还
是 demo2 页面
代码
工具类 SSOCheck
public class SSOCheck {
//验证是否登录
public static boolean checklogin(String username,String password){
if(username.equals("123")&& password.equals("123")){
return true;
}
return false;
}
//这里校验 cookie 是否有效(应在拦截器中设置)
public static boolean checkcookie(HttpServletRequest request){
Cookie[] cookies = request.getCookies();
if(cookies!=null){
for(Cookie cookie:cookies){
if(cookie.getName().equals("ssocookie")&& cookie.getValue().equals("sso")){
return true;
}
}
}
return false;
}
}
SSOAction
这是一个统一的登录接口
/**
* 登录校验
* 1、校验用户名密码
* 2、校验 cookie
* @author xuzj
*
*/
public class SSOAction extends ActionSupport{
private String username;
private String password;
private String gotourl;
public String dologin(){
//同域下的 sso
boolean ok = SSOCheck.checklogin(username, password);
if(ok){
Cookie cookie = new Cookie("ssocookie", "sso");
cookie.setPath("/");//设置到顶层
HttpServletResponse response = ServletActionContext.getResponse();
response.addCookie(cookie);
return SUCCESS;
}
return "login";
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGotourl() {
return gotourl;
}
public void setGotourl(String gotourl) {
this.gotourl = gotourl;
}
}
Demo1Action
不同域下的主页 demo1 和 demo2
//先校验 cookie 的有效性 在校验登录
public class Demo1Action extends ActionSupport{
private String gotourl;
public String main(){
HttpServletRequest request = ServletActionContext.getRequest();
boolean ok = SSOCheck.checkcookie(request);
if(ok){
return SUCCESS;
}
gotourl = "/demo1/main.action";
return "login";
}
public String getGotourl() {
return gotourl;
}
public void setGotourl(String gotourl) {
this.gotourl = gotourl;
}
}
Demo2Action
public class Demo2Action extends ActionSupport{
private String gotourl;
public String main(){
HttpServletRequest request = ServletActionContext.getRequest();
boolean ok = SSOCheck.checkcookie(request);
if(ok){
return SUCCESS;
}
gotourl = "/demo2/main.action";
return "login";
}
public String getGotourl() {
return gotourl;
}
public void setGotourl(String gotourl) {
this.gotourl = gotourl;
}
剩余15页未读,继续阅读
赵伊辰
- 粉丝: 56
- 资源: 314
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0