pycryto: ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。

错误:

Traceback (most recent call last):
  File "cost_centor_ok.py", line 6, in <module>
    from Crypto.Cipher import AES
  File "c:\users\wbac49~1.wuk\appdata\local\temp\easy_install-jra4cx\pycrypto-2.6.1-py2.7-win-amd64.egg.tmp\Crypto\Cipher\AES.py", line 50, in <module>
  File "c:\users\wbac49~1.wuk\appdata\local\temp\easy_install-jra4cx\pycrypto-2.6.1-py2.7-win-amd64.egg.tmp\Crypto\Cipher\_AES.py", line 7, in <module>
  File "c:\users\wbac49~1.wuk\appdata\local\temp\easy_install-jra4cx\pycrypto-2.6.1-py2.7-win-amd64.egg.tmp\Crypto\Cipher\_AES.py", line 6, in __bootstrap__
ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。

解决

参考链接
https://stackoverflow.com/questions/21502835/pycrypto-import-aes-issue
具体步骤:
  1. 下载对应版本的pycroto http://www.voidspace.org.uk/python/modules.shtml#pycrypto

  2. 安装, 注意安装路径

  3. 将安装路径中的lib与cryto相关的文件复制到虚拟环境

单点登录思路整理

一. 同一个域名下的单点登录

方案整理

同一域名下的单点登录, 比如有:
– 系统a: a.net.com
– 系统b: b.net.com
– 认证服务器: sso.net.com

首次登录a

  1. 浏览器打开a的某个需要登录的页面,
  2. 跳转到认证服务器,
  3. 认证服务器授权成功后, set_cookie至.net.com域名下
  4. 跳转到系统a

登录b

  1. b可以直接获取到.net.com 下的cookie

改动

后端改动

当客户端发起登录请求:
– 如果已经登录, 则提示已经登录, 则set_cookie 并提示已经登录
– 如果未登录, 则提示未登录, 并返回跳转链接

前端改动

  • 未登录会跳转, 前端关于跳转不必改动.
  • 已登录不必跳转.

二. 不同域名单点登录

比如有:

  • 系统a: a.com
  • 系统b: b.com
  • 认证服务器: sso.com

首次登录a:

  1. 浏览器打开a的某个需要登录的页面,
  2. 跳转到认证服务器,
  3. 认证服务器授权成功后, 将token set_cookie 到sso.com域名下,
  4. 随后跳转到a.com?token=xx
  5. 系统a前端存下token

登录b

  1. 浏览器打开b的某个需要登陆的页面,
  2. 跳转到认证服务器
  3. 认证服务器取出cookie中的token,
  4. 随后跳转到a.com?token=xx
  5. 系统b前端存下token