国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

單點登錄SSO(同域?qū)崿F(xiàn))

2019-11-08 02:13:21
字體:
供稿:網(wǎng)友

1.實現(xiàn)一個同域SSO的流程如下

在一個 注:在同一個域(localhost)下有dome1和dome2兩個主頁,實現(xiàn)在其中一個主頁登錄便可以訪問另一個主頁

2.統(tǒng)一登錄接口(login.jsp

pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>dome1和dome2的統(tǒng)一登錄接口</title></head><body> <center> <h1>統(tǒng)一登錄</h1> <form action="/doLogin.action" method="post"> <span>用戶名:</span> <input type="text" name="username"/> <span>密碼:</span> <input type="passWord" name="password"/> <!--隱藏表單,用于保存我們要跳轉(zhuǎn)的頁面 --> <input type="hidden" name="getUrl" value="${getUrl}"/> <input type="submit" value="登錄"/> </form> </center></body></html>

3.登錄Action(SSOAction.java

package com.hlj.action;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.hlj.util.SSOCheck;import com.opensymphony.xwork2.ActionSupport;/* * 統(tǒng)一登錄的接口action */public class SSOAction extends ActionSupport { //用戶名和密碼 PRivate String username; private String password; //隱藏表單,用于保存我們要跳轉(zhuǎn)的頁面 private String getUrl; public String getGetUrl() { return getUrl; } public void setGetUrl(String getUrl) { this.getUrl = getUrl; } 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; } /* * doLogin登錄 */ public String doLogin() { boolean flag = SSOCheck.isLogin(username, password); if(flag) { //保存cookie Cookie cookie = new Cookie("ssocookie","sso"); cookie.setPath("/"); HttpServletResponse response = ServletActionContext.getResponse(); response.addCookie(cookie);//吧cookie保存到客戶端 return SUCCESS;//登錄成功 } return null;//登錄失敗(測試不做處理) }}

4.工具類(SSOCheck.java)包括登錄驗證和校驗接口

package com.hlj.util;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;/* * 工具 */public class SSOCheck { //設(shè)置默認用戶名和密碼 private static final String USERNAME = "zhangying"; private static final String PASSWORD = "123"; /* * 判斷是否登錄成功 */ public static boolean isLogin(String username,String password) { if(username.equals(USERNAME) && password.equals(PASSWORD)) return true;//登錄成功 return false;//登錄失敗 } /* * 統(tǒng)一的校驗接口 */ public static boolean isCookie(HttpServletRequest request) { Cookie[] cookie = request.getCookies(); if(cookie!=null) { for(Cookie c : cookie) { //判斷cookie是否存在 if(c.getName().equals("ssocookie") && c.getValue().equals("sso")) { return true; } } } return false; }}

5.DOME1和DOME2的主頁(index1.jsp index2.jsp)

index1.jsp<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>歡迎訪問dome1</title></head><body> <h1>這里時dome1的主頁</h1></body></html>index2.jsp<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>歡迎訪問dome2</title></head><body> <h1>這里時dome2的主頁</h1></body></html>

6.DOME1和DOME2的Action(DOME1.java DOME2.java)

DOME1.javapackage com.hlj.action;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.hlj.util.SSOCheck;import com.opensymphony.xwork2.ActionSupport;public class DOME1 extends ActionSupport { private String getUrl; /* * dome1 */ public String main() { HttpServletRequest request = ServletActionContext.getRequest(); boolean flag = SSOCheck.isCookie(request); if(flag) { //已經(jīng)登陸 return SUCCESS; } getUrl = "/main.action";//暫存他登陸時要訪問的頁面,以便下次登陸時可以訪問 return LOGIN; }}DOME2.javapackage com.hlj.action;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.hlj.util.SSOCheck;import com.opensymphony.xwork2.ActionSupport;public class DOME2 extends ActionSupport { private String getUrl; /* * dome2 */ public String main() { HttpServletRequest request = ServletActionContext.getRequest(); boolean flag = SSOCheck.isCookie(request); if(flag) { //已經(jīng)登陸 return SUCCESS; } getUrl = "/demo2/main.action";//暫存他登陸時要訪問的頁面,以便下次登陸時可以訪問 return LOGIN; }}

7.struts.xml中的配置(struts.xml)

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"><struts> <package name="sso" extends="struts-default" namespace="/"> <action name="doLogin" class="com.hlj.action.SSOAction" method="doLogin"> <!-- type設(shè)置為請求轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)到我們要跳轉(zhuǎn)的頁面 --> <result name="success" type="redirect">${getUrl}</result> </action> </package> <package name="dome1" extends="struts-default" namespace="/"> <action name="dome1" class="com.hlj.action.DOME1" method="main"> <result name="success">/index1.jsp</result> <result name="login">/login.jsp</result> </action> </package> <package name="dome2" extends="struts-default" namespace="/"> <action name="dome2" class="com.hlj.action.DOME2" method="main"> <result name="success">/index2.jsp</result> <result name="login">/login.jsp</result> </action> </package></struts>

8.測試(在頁面訪問dome1和dome2兩個主頁,都會跳轉(zhuǎn)到登錄頁面)

這里寫圖片描述這里寫圖片描述

當(dāng)我們在其中一個主頁進行登錄后,頁面另外一個主頁便可直接訪問

這里寫圖片描述這里寫圖片描述

備:這樣一個同域的單點登錄(SSO)就完成了


上一篇:字符串編輯距離

下一篇:二分查找

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 绍兴市| 合阳县| 聂拉木县| 和静县| 嘉峪关市| 博野县| 云浮市| 石门县| 思南县| 濮阳市| 博乐市| 伊宁市| 疏勒县| 红桥区| 高清| 丰都县| 泾阳县| 沙洋县| 汤原县| 禹州市| 深圳市| 左权县| 额尔古纳市| 桂平市| 二手房| 美姑县| 宁蒗| 广昌县| 安丘市| 黑水县| 弥勒县| 古浪县| 佛坪县| 桃源县| 焦作市| 兴义市| 安宁市| 红原县| 阿鲁科尔沁旗| 手机| 哈巴河县|