discuz之同步登入
前言

同步登入
Discuz是康盛公司下的一套通用的社区论坛软件系统
康盛公司还有其他产品,为了让多个网站一个账号登入就能畅通无阻,于是有了UCenter
本篇介绍Asp.Net网站与Discuz实现同步登入
我这里大部分是搬运他的
首先获得UCenter For .Nethttps://github.com/dozer47528/UCenter-API-For-DotNet
简单的说,它也是个网站,可以管N个网站的用户


类库概况
类库分为以下几个部分
- Api 用于提供给 UCenter 调用的结构
- Client 用于调用 UCenter 的接口,网站程序调用的
- Model 调用过程中的一些数据封装
- UcConfig 静态类,读取上面的配置文件(App.config或Web.config)信息
- UcUtility 一些常用函数
- App.config 配置文件示例



网站与UCenter关联

提交完后会在最下面生成配置信息
define('UC_CONNECT', 'mysql');
define('UC_DBHOST', 'localhost');
define('UC_DBUSER', 'root');
define('UC_DBPW', '123456');
define('UC_DBNAME', 'ultrax');
define('UC_DBCHARSET', 'gbk');
define('UC_DBTABLEPRE', '`ultrax`.pre_ucenter_');
define('UC_DBCONNECT', '0');
define('UC_KEY', 'FD144298AF7E4797A66ACC0C18C97EA3');
define('UC_API', 'http://localhost:8080/uc_server');
define('UC_CHARSET', 'gbk');
define('UC_IP', '');
define('UC_APPID', '2');
define('UC_PPP', '20');
- <configuration>
- <system.web>
- <compilation debug="true" targetFramework="4.0"/>
- <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>
- </system.web>
- <appSettings>
- <!--客户端版本-->
- <add key="UC_CLIENT_VERSION" value="1.5.2"/>
- <!--发行时间-->
- <add key="UC_CLIENT_RELEASE" value="20101001"/>
- <!--API 开关(value类型:True False 默认值:True)-->
- <!--是否允许删除用户-->
- <add key="API_DELETEUSER" value="True"/>
- <!--是否允许重命名用户-->
- <add key="API_RENAMEUSER" value="True"/>
- <!--是否允许得到标签-->
- <add key="API_GETTAG" value="True"/>
- <!--是否允许同步登录-->
- <add key="API_SYNLOGIN" value="True"/>
- <!--是否允许同步登出-->
- <add key="API_SYNLOGOUT" value="True"/>
- <!--是否允许更改密码-->
- <add key="API_UPDATEPW" value="True"/>
- <!--是否允许更新关键字-->
- <add key="API_UPDATEBADWORDS" value="True"/>
- <!--是否允许更新域名解析缓存-->
- <add key="API_UPDATEHOSTS" value="True"/>
- <!--是否允许更新应用列表-->
- <add key="API_UPDATEAPPS" value="True"/>
- <!--是否允许更新客户端缓存-->
- <add key="API_UPDATECLIENT" value="True"/>
- <!--是否允许更新用户积分-->
- <add key="API_UPDATECREDIT" value="True"/>
- <!--是否允许向UCenter提供积分设置-->
- <add key="API_GETCREDITSETTINGS" value="True"/>
- <!--是否允许获取用户的某项积分-->
- <add key="API_GETCREDIT" value="True"/>
- <!--是否允许更新应用积分设置-->
- <add key="API_UPDATECREDITSETTINGS" value="True"/>
- <!--API 开关结束-->
- <!--返回值设置-->
- <!--返回成功(默认:1)-->
- <add key="API_RETURN_SUCCEED" value="1"/>
- <!--返回失败(默认:-1)-->
- <add key="API_RETURN_FAILED" value="-1"/>
- <!--返回禁用(默认:-2)-->
- <add key="API_RETURN_FORBIDDEN" value="-2"/>
- <!--返回值设置结束-->
- <!--[必填]通信密钥-->
- <add key="UC_KEY" value="FD144298AF7E4797A66ACC0C18C97EA3"/>
- <!--[必填]UCenter地址-->
- <add key="UC_API" value="http://localhost:8080/uc_server"/>
- <!--[必填]默认编码-->
- <add key="UC_CHARSET" value="gbk"/>
- <!--[非必填]UCenter IP-->
- <add key="UC_IP" value=""/>
- <!--[必填]应用ID-->
- <add key="UC_APPID" value="2"/>
- </appSettings>
- </configuration>

Talk is cheap.Show you the code
- public void ProcessRequest(HttpContext context)
- {
- context.Response.ContentType = "text/html";
- IUcClient client = new UcClient();
- ");//登陆
- var js=client.UserSynlogin(user.Uid);//返回一个js代码,这是同步登入的关键
- if (user.Result==LoginResult.Success)
- {
- context.Response.Write(js);
- context.Response.Write(user.UserName);
- }
- }
上面可以认为是我的网站去找UCenter,但是UCenter怎么找我,所谓通信必须是你来我往
添加一个API文件夹,在下面添加一个uc.ashx(是不是很眼熟,没错刚刚在UCenter应用管理中心就是设置了这个)
让uc继承UcApiBase,实现其抽象方法
删除 uc.ashx的ProcessRequest 方法 因为UcApiBase里面有了
好启动你的网站
- 确保你的iis启动着
- wampserver正常运行,要绿绿的(MySQL启动着,本来是一篇文章被我拆成两篇,所以这里有点突兀)
- 确保你的Discuz能访问
- 确保UCenter中的配置与Web.Config正确
- 确保你的新网站在服务器运行
这个图能解释TestHandler.ashx的ProcessRequest
返回的js将再浏览器中执行
discuz同步登入你的网站
- <?php
- $_CACHE['apps'] = array (
- 1 =>
- array (
- 'appid' => '1',
- 'type' => 'DISCUZX',
- 'name' => 'Discuz! Board',
- 'url' => 'http://localhost:8080',
- 'ip' => '',
- 'viewprourl' => '',
- 'apifilename' => 'uc.php',
- 'charset' => '',
- 'dbcharset' => '',
- 'synlogin' => '1',
- 'recvnote' => '1',
- 'extra' => false,
- 'tagtemplates' => '',
- 'allowips' => '',
- ),
- );
- ?>
- <?php
- $_CACHE['apps'] = array (
- =>
- array (
- ',
- 'type' => 'DISCUZX',
- 'name' => 'Discuz! Board',
- 'url' => 'http://localhost:8080',
- 'ip' => '',
- 'viewprourl' => '',
- 'apifilename' => 'uc.php',
- 'charset' => '',
- 'dbcharset' => '',
- ',
- ',
- 'extra' => false,
- 'tagtemplates' => '',
- 'allowips' => '',
- ),
- =>
- array (
- ',
- 'type' => 'OTHER',
- 'name' => 'MyWebSite',
- 'url' => 'http://localhost:7067',
- 'ip' => '',
- 'viewprourl' => '',
- 'apifilename' => 'uc.ashx',
- 'charset' => '',
- 'dbcharset' => '',
- ',
- ',
- 'extra' => false,
- 'tagtemplates' => '',
- 'allowips' => '',
- ),
- );
- ?>

discuz之同步登入的更多相关文章
- 无需激活直接同步登入discuz,php代码(直接可用)
<?php /** * 抽奖 * @param int $total */ function getReward($total=1000) { $win1 = floor((0.12*$tota ...
- 【Android Training - UserInfo】记住登入用户的信息[Lesson 1 - 使用AccountManager来记住用户]
Remembering Your User[记住你的用户] 每一个人都非常喜欢自己的名字能被人记住.当中最简单,最有效的使得你的app让人喜欢的方法是记住你的用户是谁,特别是当用户升级到一台新的设备或 ...
- Python爬虫笔记【一】模拟用户访问之提交表单登入—第二次(7)
在第一次登入时遇到这个问题,页面验证码与下载下来需要识别的验证码不同的问题,从网上查寻说是叫验证码同步问题.发现是用cookie解决的,那次cookie介绍到通过cookie就可以实现时间戳同步问题, ...
- 鸟哥Linux私房菜(基础篇)——第五章:首次登入与在线求助 man page笔记
1.X Winsows与文本模式的切换 ●[Ctrl] + [Alt] + [F1] ~ [F6] :文字接口登入 tty1 ~ tty6 终端机. ●[Ctrl] + [Alt] + ...
- 手游聚合SDK开发之远程开关---渠道登入白名单
白名单有啥好说的呢?无非就是筛选登入,大家第一眼看到就是这个印象,白名单也是有文章的,弄的时机不同会给你带来很不错的收益,注意是收益.还是举例来说,游戏上线前渠道都会做一个预下载,一般提前1-2天,这 ...
- javaweb 基于java Servlet登入 简单入门案例
项目流程 第一步:创建一个java webproject第二步:创建三个界面,1,login.jsp 2 success.jsp 3 fail.jsp第三步:更改新建界面编码格式,utf-8 默然编码 ...
- [ASP.NET MVC] ASP.NET Identity登入技术应用
[ASP.NET MVC] ASP.NET Identity登入技术应用 情景 ASP.NET Identity是微软所贡献的开源项目,用来提供ASP.NET的验证.授权等等机制.在ASP.NET I ...
- [ASP.NET MVC] ASP.NET Identity登入技术剖析
[ASP.NET MVC] ASP.NET Identity登入技术剖析 前言 ASP.NET Identity是微软所贡献的开源项目,用来提供ASP.NET的验证.授权等等机制.本篇文章介绍ASP. ...
- C#登入例子--第一个程序
第一步:在数据库创建一个存放账号密码的表单 第二步:创建一个登入项目 拆分成三层: CS层: BLL层: DAL层: Common层: Web.config:
随机推荐
- windows下如何修改远程登录端口
windows下如何修改远程登录端口 windows远程桌面默认端口为3389,修改 方法如下:在"开始>运行"中输入"regedit" 点击“确定”,打 ...
- WindowsApi 解压缩文件
.解压方法 转载自http://www.2cto.com/kf/201204/128704.html "C#解压.zip文件,网上一搜一大堆方法,有使用System.IO.Compressi ...
- WordPress 主题开发 - (六) 创建主题函数 待翻译
We’ve got a file structure in place, now let’s start adding things to them! First, we’re going to ad ...
- C++求1!到n!的和
题目内容:求1!+2!+3!+4!+……+n!的结果. 输入描述:输入不多于50个正整数的数据n(1<=n<=12). 输出描述:对于每个n,输出计算结果.每个计算结果应单独占一行. 参考 ...
- 类似桌面背景壁纸随手指滑动--第三方开源--BackgroundViewPager
Android BackgroundViewPager在github上的项目主页是:https://github.com/MoshDev/BackgroundViewPager 下载下来即可运行
- 查看SDCard是否被挂载
获取Environment.getExternalStorageState(),然后得到的字符串进行查看 //android.os.Environment.MEDIA_MOUNTED="mo ...
- 删:Centos 7安装Nginx 1.8
[CentOS 7] 安装nginx! 首先进行 nginx yum Nginx安装记录 注意:如果用源码安装,nginx配置时需要指定--with-pcer对应的压缩包路径,如果使用二进制安装不需要 ...
- 关于VS2012下安装破解文件Visual Assit X的一点说明
今天在使用Visual Studio 2012的时候,编写代码的助手Visual Assit X突然提示我说,试用期已过,要求我输入一个注册码,我靠,这货不是几个月前已经破解了吗,怎么今天傻不愣登的提 ...
- Firbird 将可 null 的列更新为 not null
在GOOGLE上搜到2种方法: 第一种是新加一列 C2, 然后 update myTable set C2=原字段,再删除[原字段], 但这种方法有限制,当很多其它表引到此表时,非常麻烦. 第 ...
- [.NET 4.5] ADO.NET / ASP.NET 使用 Async 和 Await 异步 存取数据库
此为文章备份,原文出处(我的网站) [.NET 4.5] ADO.NET / ASP.NET 使用 Async 和 Await 异步 存取数据库 http://www.dotblogs.com.tw ...