/**
* @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整合spring security 实现SSO单点登陆 完整DEMO. ...2、先后启动SsoServer、sso-resource、sso-client1、sso-client2 3、访问http://sso-taobao:8083/client1/ 或 http://sso-tmall:8084/client2/
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论坛的单点登录(Single Sign-On, SSO)集成。 Discourse是一款现代化的开源讨论平台,被许多社区和组织用于在线...
1、boy-sso-example项目中直接在web.xml中添加如下代码,需要注意的是需要依赖boy-sso-client这个项目。 <filter-name>SSOAuth</filter-name> <filter-class>com.boy.sso.client.SSOFilter</filter-class> ...
首先,我们需要理解SSO(Single Sign-On)的基本原理。SSO允许用户在一个身份验证系统中登录,然后可以访问所有其他与该系统兼容的应用程序,而无需再次输入凭据。这对于拥有多个服务的大型平台来说尤其有用,因为它...
"Laravel 开发-passport-sso-client" 项目就是基于 Laravel Passport 实现的 SSO 客户端库,它帮助开发者轻松集成到具有 Passport 的 SSO 系统中。 1. **Passport 概述** - Passport 是 Laravel 提供的一个全面的 ...
SSO 登录用户的登录名,可选配置。 --> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <filter-class> org.jasig.cas.client.util.HttpServletRequestWrapperFilter </filter-class>...
《Python库深度剖析:django-admin-sso-0.1.1》 在IT行业中,Python以其简洁、易读的语法和强大的库支持成为了后端开发的热门选择。Django,作为Python的一个优秀Web框架,更是备受开发者青睐。本文将深入探讨一个...
本项目"laravel开发-sso-broker"旨在利用Laravel构建一个SSO代理,基于Jasny/SSO库,以实现跨多个Laravel应用的SSO功能。 **1. Jasny/SSO 库介绍** Jasny/SSO是由荷兰开发者Arnout Boks创建的一个轻量级的SSO解决...
`django-simple-sso-0.5.1.tar.gz`是一个Python库,用于在Django框架下实现单点登录功能。它简化了SSO的集成过程,包含认证服务、客户端应用、API接口以及多种配置选项。开发者可以通过PyPI官方渠道下载,然后使用...
在提供的文件列表"discourse-sso-master"中,很可能包含了实现这一过程的源代码示例。这些代码可能包括了配置文件、控制器、路由定义以及其他辅助类。通过分析和学习这些代码,你可以更深入地了解Laravel与Discourse...
通过这个Demo,开发者能够深入理解OAuth2的工作原理以及如何在Spring Security环境中进行配置。 总的来说,Spring Security OAuth2的配置涉及到许多细节,包括但不限于授权码模式、密码模式、刷新令牌、客户端凭证...
# sso-shiro-cas spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次 ## 系统模块说明 1. cas: 单点登录模块,这里直接拿的是cas的项目改了点样式而已 2. doc: 文档目录,里面有数据库...
本详细设计说明书的下篇将深入探讨SSO的核心原理、实现方式及具体的设计方案。 首先,SSO的关键在于共享用户认证信息。在描述中提到的流程图可能展示了用户从访问一个应用系统开始,通过SSO服务进行身份验证,然后...
### 实现SSO的CAS开源框架介绍 #### CAS (Central Authentication Service) 概述 CAS(Central Authentication Service),即中央认证服务,是由耶鲁大学的信息技术服务中心(ITS)开发的一套用于实现单点登录...
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"文件可能包含了实现这一功能的"ScreenSaverKiller.exe"可执行文件,以及可能的配置文件、文档或库文件。执行文件可能使用某种编程语言编写,如C++、C#或Java,利用API调用来检测和阻止屏幕保护的...
CAS SSO 单点登录记录 作者:刘仁奎 个人网址 程序喵:http://www.ibloger.net / http://www.chengxumiao.net 程序员购书导航指南:http://books.chengxumiao.net QQ:1056856191 GitHub地址:...
centos7.0 sso下载地址:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-1804.iso 方案二: centos7.0已经做好的镜像(包含图形化): 链接:...