实现功能只需要输入一个帐号即可登录系统。

需要实现上面的功能需要:

1.编辑imitate.jsp页面

<%@page import="com.hotent.core.util.ContextUtil"%>
<%@page import="com.hotent.platform.model.system.SysUser"%>
<%@page import="org.springframework.security.core.Authentication,
org.springframework.security.core.context.SecurityContext,
com.hotent.core.util.AppUtil,
org.springframework.security.authentication.AuthenticationManager,
org.springframework.security.core.context.SecurityContextHolder,
org.springframework.security.web.authentication.WebAuthenticationDetails,
org.springframework.security.authentication.UsernamePasswordAuthenticationToken"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
AuthenticationManager authenticationManager=(AuthenticationManager)AppUtil.getBean("authenticationManager");
String account=request.getParameter("account"); UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(account, "");
authRequest.setDetails(new WebAuthenticationDetails(request));
SecurityContext securityContext = SecurityContextHolder.getContext();
Authentication auth = authenticationManager.authenticate(authRequest);
securityContext.setAuthentication(auth); SysUser user=ContextUtil.getCurrentUser(); out.print(user.getFullname());
%>

调用api验证用户,这里只输入了帐号,密码为空,但是数据库中的密码是使用sha256算法加密的密码,这个时候我们需要实现一个PasswordEncoder。

2.实现PasswordEncoder,这个encoder 始终返回为true,具体实现由用户自己实现。

package com.hotent.platform.service.system.impl;
import org.springframework.security.authentication.encoding.PasswordEncoder;
public class EmptyPasswordEncoder implements PasswordEncoder {
@Override
public String encodePassword(String rawPass, Object salt) {
System.out.println(rawPass);
return rawPass;
}
/**
* encPass:数据库密码
* rawPass:原密码
*/
@Override
public boolean isPasswordValid(String encPass, String rawPass, Object salt) {
return true;
}
}

3.配置app-security.xml.

<security:authentication-manager alias="authenticationManager" >
<security:authentication-provider user-service-ref="sysUserDao">
<security:password-encoder ref="passwordEncoder"/>
</security:authentication-provider>
</security:authentication-manager> <bean id="passwordEncoder" class="com.hotent.platform.service.system.impl.EmptyPasswordEncoder"></bean>

4.配置imitate.jsp匿名访问。

<property name="anonymousUrls">
<set>
<value>/mobileLogin.jsp</value>
<value>/mobileLogin.ht</value>
<value>/platform/mobile/lang/changLang.ht</value>
<value>/loginRedirect.ht</value>
<value>/login.jsp</value>
<value>/imitate.jsp</value>
<value>/login.ht</value>
<value>/bpmImage</value>
<value>/platform/bpm/processRun/processImage.ht</value>
<value>/platform/bpm/processRun/getFlowStatusByInstanceId.ht</value>
<value>/platform/bpm/processRun/taskUser.ht</value>
<value>/platform/bpm/taskOpinion/list.ht</value>
<!-- flex附件上传的 -->
<value>/platform/bpm/bpmDefinition/getXmlImport.ht</value>
<value>/mobile/system/mobileLogin.ht</value>
<value>/mobile/system/mobileLogout.ht</value>
</set>
</property>

BPMX3模拟登录的更多相关文章

  1. PHP cURL 使用cookie 模拟登录

    cURL是什么 cURL: http://php.net/manual/zh/book.curl.php PHP 支持 Daniel Stenberg 创建的 libcurl 库,能够连接通讯各种服务 ...

  2. 【Python数据分析】Python模拟登录(一) requests.Session应用

    最近由于某些原因,需要用到Python模拟登录网站,但是以前对这块并不了解,而且目标网站的登录方法较为复杂, 所以一下卡在这里了,于是我决定从简单的模拟开始,逐渐深入地研究下这块. 注:本文仅为交流学 ...

  3. Android利用HttpURLConnection实现模拟登录

    最近在做一个APP,需要模拟登录教务处,之前曾经用HttpClient做过,点这里,但是发现最新的Android SDK已经不支持Httpclient了,所以只好在琢磨一下HttpURLConnect ...

  4. Python requests模拟登录

    Python requests模拟登录 #!/usr/bin/env python # encoding: UTF-8 import json import requests # 跟urllib,ur ...

  5. php中CURL实现模拟登录并采集数据

    在php中采集我们用的是简单的采集方式(例如file_get_contents)就无法做到了,但是如果想模拟登录用户并采集利用它就没办法了,我们可利用CURL函数来实现模拟登录并采集数据 这里要说一些 ...

  6. .NET微信模拟登录及{base_resp:{ret:-4,err_msg:nvalid referrer}}的解决办法

    12年的时候写了些关于微信开发的内容,当时看好这个东西,可惜当时腾讯开放的权限太少,之后的一年多时间没有太关注了. 现在又要重新开始微信开发的阵容了,微信只是个入口,微网站才是趋势. 我是个水货,所以 ...

  7. curl模拟登录新浪微博

     这几天要做个获取新浪微博@我的信息, 又不用第三方登录,所以只能通过模拟登录来获取信息,研究的一下发现直接模拟登录微博比较困难,验证的算法比较复杂,于是绕道通过登录新浪通行证后来获取cookie 来 ...

  8. curl 模拟登录微信公众平台带验证码

    这段时间一直写个项目, 从切图到前端到后台都要搞定,真tm累. 今天下午手残,不停用错误的密码去模拟登录微信公众平台,结果后来出现验证码,瞬间悲剧(菜鸟从来没搞过带验证码的). 研究了一下,发现其实很 ...

  9. .net 模拟登录Post提交

    最近在做一个项目,要求集成到第三方系统中,由于先前没有做过类似的活,所以折腾了几天,蹭着有闲情的时候记录一下. 以下实例,都是我用Asp.net语言进行开发的,关于HTML元素的获取,使用的是Goog ...

随机推荐

  1. Spring依赖注入

    依赖注入: 使用构造器注入 使用属性setter方法注入 使用Field注入(用于注解方式) 注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员 ...

  2. HTML5探索之datalist研究

    最近一个项目需要用到类似淘宝,百度搜索时的自动检索方案.自然想到了使用datalist标签.但是遇到一个bug,经过两天研究.小有结果给大家分享下~~ 首先看bug吧!~ 因为项目最开始测试就是用36 ...

  3. Vnc viewer与windows之间的复制粘贴

    用VNC连接到Linux之后,最纠结的问题就是无法复制粘贴.其实很简单,在Linux里面,打开一个终端,然后输入命令: vncconfig 之后,会弹出一个窗口 不要关闭那个小窗口 之后,就可以愉快的 ...

  4. surfaceview介绍

    [1]surfaceview 控件是一个重量级控件      [2]内部维护了2个线程     A 获取数据  负责显示     B 负责显示  获取数据      [3]他可以直接在子线程更新ui ...

  5. GO数据库

    Golang 数据库操作 Golang 数据库 MySQL Golang支持DB操作位于database包下,支持基本CRUD操作.事务和Prepared Statement,本文以MySQL为例. ...

  6. hdu1907(anti-sg入门)

    改变了下规则,现在变成了最后拿的人输. 如果对于单纯的nim的话,只需要判断每堆都是1个石子的特殊情况. 因为如果存在有大于1个石子的堆话,类似于nim的取法,处于必胜状态的一方只需要在 对方取完后只 ...

  7. 转!!java泛型概念(泛型类,接口,方法)

    一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(Stri ...

  8. AsyncTask实现异步线程通信

    AsyncTask是Android1.5开始提供的一个封装了Thread与Handler可以实现异步线程的简单方式,不需要再自己实现子线程,然后在主线程处接受数据. 因为AsyncTask是用线程池, ...

  9. VR应用里面的Photogrammetry技术是什么

    http://www.manew.com/thread-49556-1-1.html 具体使用 http://www.didayin.com/archives/632 软件下载 http://labs ...

  10. 在线读取Mongodb数据库下载EXCEL文件

    版本:Mongodb2.4.8 通过页面下载Excel文件 jsp <%@ page language="java" contentType="text/html; ...