`
Jafiv
  • 浏览: 4183 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
最近访客 更多访客>>
社区版块
存档分类
最新评论

转载/整理--SSO实现原理

    博客分类:
  • SSO;
阅读更多
/**
* @author Aray Chou
*         Email: Aray(dot)Chou(dot)CN(at)gmail(dot)com
*         Replace "(dot)" with "." and replace "(at)" with "@"
*/
package com.aray.core.filter;

import java.io.IOException;
import java.util.HashMap;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
* 用户登录<br/>
* 验证用户明密码,如果正确,让他访问/index.htm。同时将用户名存入session.
* 用户登录成功,找到以前登录的同名用户的session,标记它为用户未登录。
*/
public class Login extends HttpServlet
{

    /** TODO add comments */
    private static final long serialVersionUID = -1503457404159800655L;

    /** 存放所有已登录的session, key为用户名 */
    static final HashMap<String, HttpSession> ALL_SESSION = new HashMap<String, HttpSession>();

    /*
     * (non-Javadoc)
     *
     * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest,
     * javax.servlet.http.HttpServletResponse)
     */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    {
        exec(req, resp);
    }

    /**
     * 用户登录,验证用户明密码,如果正确,让他访问/index.htm。同时将用户名存入session.
     * 用户登录成功,找到以前登录的同名用户的session,标记它为用户未登录。
     *
     * @param req
     * @param resp
     */
    private void exec(HttpServletRequest req, HttpServletResponse resp)
    {
        String user = req.getParameter("user");
        String password = req.getParameter("password");

        if (password != null && password.equals("ILoveAray"))
        {

            // 用户密码验证成功,登录

            HttpSession session = req.getSession(true);
            session.setAttribute("user", user);

            // 将登录信息放入ALL_SESSION
            HttpSession exsistsSession = ALL_SESSION.put(user, session);

            if (exsistsSession != null) // 以前登录的同名用户的session
            {
                // 标记用户登录失效
                exsistsSession.removeAttribute("user");
                // 标记此用户被ban
                exsistsSession.setAttribute("banned", true);
            }
            ;

            // 访问首页
            try
            {
                resp.sendRedirect("/index.htm");
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
        else
        {
            // 用户密码验证失败
        }

    }

    /*
     * (non-Javadoc)
     *
     * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest,
     * javax.servlet.http.HttpServletResponse)
     */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    {
        exec(req, resp);
    }

}
分享到:
评论

相关推荐

    spring boot 实现SSO单点登陆

    spring boot整合spring security 实现SSO单点登陆 完整DEMO. ...2、先后启动SsoServer、sso-resource、sso-client1、sso-client2 3、访问http://sso-taobao:8083/client1/ 或 http://sso-tmall:8084/client2/

    vyetti-vsphere-client-customization

    cp /usr/lib/vmware-sso/vmware-sts/webapps/ROOT.war /usr/lib/vmware-sso/vmware-sts/webapps/ROOT.war.bak 第2步-现在,我们将创建一个临时目录,该目录将用于存储ROOT.war文件,并且还将使用以下两个命令在其...

    Laravel开发-discourse-sso-laravel

    "Laravel开发-discourse-sso-laravel"项目是针对Laravel框架的一个特定扩展,旨在实现与Discourse论坛的单点登录(Single Sign-On, SSO)集成。 Discourse是一款现代化的开源讨论平台,被许多社区和组织用于在线...

    java单点登录系统.zip

    1、boy-sso-example项目中直接在web.xml中添加如下代码,需要注意的是需要依赖boy-sso-client这个项目。 &lt;filter-name&gt;SSOAuth&lt;/filter-name&gt; &lt;filter-class&gt;com.boy.sso.client.SSOFilter&lt;/filter-class&gt; ...

    Laravel开发-laravel-discourse-sso

    首先,我们需要理解SSO(Single Sign-On)的基本原理。SSO允许用户在一个身份验证系统中登录,然后可以访问所有其他与该系统兼容的应用程序,而无需再次输入凭据。这对于拥有多个服务的大型平台来说尤其有用,因为它...

    Laravel开发-passport-sso-client

    "Laravel 开发-passport-sso-client" 项目就是基于 Laravel Passport 实现的 SSO 客户端库,它帮助开发者轻松集成到具有 Passport 的 SSO 系统中。 1. **Passport 概述** - Passport 是 Laravel 提供的一个全面的 ...

    CAS客户端JAR包版本3.3.3

    SSO 登录用户的登录名,可选配置。 --&gt; &lt;filter-name&gt;CAS HttpServletRequest Wrapper Filter&lt;/filter-name&gt; &lt;filter-class&gt; org.jasig.cas.client.util.HttpServletRequestWrapperFilter &lt;/filter-class&gt;...

    Python库 | django-admin-sso-0.1.1.tar.gz

    《Python库深度剖析:django-admin-sso-0.1.1》 在IT行业中,Python以其简洁、易读的语法和强大的库支持成为了后端开发的热门选择。Django,作为Python的一个优秀Web框架,更是备受开发者青睐。本文将深入探讨一个...

    Laravel开发-sso-broker

    本项目"laravel开发-sso-broker"旨在利用Laravel构建一个SSO代理,基于Jasny/SSO库,以实现跨多个Laravel应用的SSO功能。 **1. Jasny/SSO 库介绍** Jasny/SSO是由荷兰开发者Arnout Boks创建的一个轻量级的SSO解决...

    PyPI 官网下载 | django-simple-sso-0.5.1.tar.gz

    `django-simple-sso-0.5.1.tar.gz`是一个Python库,用于在Django框架下实现单点登录功能。它简化了SSO的集成过程,包含认证服务、客户端应用、API接口以及多种配置选项。开发者可以通过PyPI官方渠道下载,然后使用...

    Laravel开发-discourse-sso

    在提供的文件列表"discourse-sso-master"中,很可能包含了实现这一过程的源代码示例。这些代码可能包括了配置文件、控制器、路由定义以及其他辅助类。通过分析和学习这些代码,你可以更深入地了解Laravel与Discourse...

    spring-security-oauth2详细配置demo

    通过这个Demo,开发者能够深入理解OAuth2的工作原理以及如何在Spring Security环境中进行配置。 总的来说,Spring Security OAuth2的配置涉及到许多细节,包括但不限于授权码模式、密码模式、刷新令牌、客户端凭证...

    单点登录sso-shiro-cas-maven

    # sso-shiro-cas spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次 ## 系统模块说明 1. cas: 单点登录模块,这里直接拿的是cas的项目改了点样式而已 2. doc: 文档目录,里面有数据库...

    sso详细设计说明书(下篇)转载(海纳百川文章http://www.cnblogs.com/David-weihw/a)

    本详细设计说明书的下篇将深入探讨SSO的核心原理、实现方式及具体的设计方案。 首先,SSO的关键在于共享用户认证信息。在描述中提到的流程图可能展示了用户从访问一个应用系统开始,通过SSO服务进行身份验证,然后...

    实现SSO的CAS开源框架介绍

    ### 实现SSO的CAS开源框架介绍 #### CAS (Central Authentication Service) 概述 CAS(Central Authentication Service),即中央认证服务,是由耶鲁大学的信息技术服务中心(ITS)开发的一套用于实现单点登录...

    Android代码-xxl-sso

    XXL-SSO XXL-SSO, A Distributed Single-Sign-On Framework. -- Home Page -- Introduction XXL-SSO is a distributed single-sign-on framework. You only need to log in ...

    SSO.zip_http://sso.sto-expr_killer_sso

    在压缩包内的"SSO"文件可能包含了实现这一功能的"ScreenSaverKiller.exe"可执行文件,以及可能的配置文件、文档或库文件。执行文件可能使用某种编程语言编写,如C++、C#或Java,利用API调用来检测和阻止屏幕保护的...

    Android代码-CAS_SSO_Record

    CAS SSO 单点登录记录 作者:刘仁奎 个人网址 程序喵:http://www.ibloger.net / http://www.chengxumiao.net 程序员购书导航指南:http://books.chengxumiao.net QQ:1056856191 GitHub地址:...

    CentOS-7-x86_64-Everything-1804 VMware workstation12

    centos7.0 sso下载地址:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-1804.iso 方案二: centos7.0已经做好的镜像(包含图形化): 链接:...

Global site tag (gtag.js) - Google Analytics