如何在其他系统中链接的Discuz,实现单点登录
经过研究,重写实现了一个可以在不同2版本中实现单点登录的简 单方法。 1,共用登陆页代码实现: 复制代码 代码如下: protected void btnLogin_Click(object sender, EventArgs e) { //认证开票,跳转到原始请求页面 System"/> </authentication> <!--验证算法--> <machineKey validationKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902" decryptionKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC" validation="SHA1" decryption="3DES" /> <compilation debug="true"/> 这里:authentication/forms节点最重要的两个属性是name和protection版本的,这里的加密/解密不要使用md5 <machineKey decryptionKey="8B6697227CBCA902B1A0925D00FAA00B353F2DF4359D2099" validation="MD5" validationKey="282487E295028E59B8F411ACB689CCD6F39DDD2146055A3EE480424315994760ADF21B580D8587DB675FA02F7916813044E25309CCCDB647174D5B3D0DD9141"/> 3,没有登录页的单点登录不需要代码 直接配置就可以了,配置如下 复制代码 代码如下: <authorization> <deny users=""/> </authorization> <authentication mode="Forms"> <forms name="/Login"/> </authentication> 4,登录模块从定向代码封装在httpModules中供其他系统直接调用,这里附上封装代码与引用方法: 复制代码 代码如下: public class SsoLoginRedirectModule : IHttpModule { public void Init(HttpApplication i_application) { // TODO: Add UploadModuleInit implementation i_applicationEndRequest += new EventHandler(i_application_EndRequest); } void i_application_EndRequest(object sender, EventArgs e) { if ((HttpContextCurrentResponseStatusCode == 302) && HttpContextCurrentResponseRedirectLocationContains(FormsAuthenticationLoginUrl)) { HttpContextCurrentResponseRedirectLocation = FormsAuthenticationLoginUrl + "ReturnUrl=" + HttpUtilityUrlEncode(HttpContextCurrentRequestUrlOriginalString); } } public void Dispose() { //throw new NotImplementedException(); } } 引用: 复制代码 代码如下: <httpModules> <add name="SsoModule" type="SsoModuleSsoLoginRedirectModule, SsoModule"/> </httpModules>
同步太麻烦,可以将Discuz! NT 转换为Discuz! X25。
Discuz论坛有相关教程,如“Discuz! NT 30、31、35、36、39版本转换到 Discuz! X25版本教程
”。
在某些网络环境和系统环境下,应用中心检测不到用户是在Discuz!管理中心加载的应用中心页面(它认为是浏览器某个标签上单独打开的应用中心页面,而不是某个网站的后台加载的),因此应用中心的右上角不出现“QQ未绑定”或者“注册”这种链接,只显示“使用QQ登陆”,即使出现“注册”这个链接,点击后也会变成让你登陆的页面,所以照它的提示做下去就是一个死循环。这才是新手经常发帖反馈“此QQ帐号还未绑定任何站点,无法登录”的真正原因,解决办法超级简单的:换一台跟你不是同一个局域网内的电脑,再登陆你网站后台进入应用中心,右上角就会出现“注册”按钮,进去之后要填网站信息、还有QQ绑定,填完之后就OK了,如果还不行就多试几台电脑,总有一个是可以的
看discuz用户登录采用的什么方式, cookies还是session 还是服务器缓存等等
自己用户登录时采用相应的方法就行。
或者把discuz中的登录代码在自己的网站中执行一遍,当然,你的用户数据相应在discuz中的用户表中存在
或许你和discuz共用用户表也行
这些不是都通过uc整合的吗?
1、用户注册
$uid = uc_user_register($_POST['username'], $_POST['password'], $_POST['email']);
if($uid <= 0) {
if($uid == -1) {
echo '用户名不合法';
} elseif($uid == -2) {
echo '包含要允许注册的词语';
} elseif($uid == -3) {
echo '用户名已经存在';
} elseif($uid == -4) {
echo 'Email 格式有误';
} elseif($uid == -5) {
echo 'Email 不允许注册';
} elseif($uid == -6) {
echo '该 Email 已经被注册';
} else {
echo '未定义';
}
} else {
echo '注册成功';
}
2、登陆
list($uid, $username, $password, $email) = uc_user_login($_POST['username'], $_POST['password']);
if($uid > 0) {
echo '登录成功';
} elseif($uid == -1) {
echo '用户不存在,或者被删除';
} elseif($uid == -2) {
echo '密码错';
} else {
echo '未定义';
}
3、这个可以修改模板。templates/default/headerhtm
此文件中有id为umenu的div标签,即网页头部导航菜单
4、同样可以修改模板。templates/default/personal_navbarhtm
补充回答:
你真的要好好看ucenter的开发指南了。
5、用户发送信息
uc_pm_send(integer 发送者uid/用户名 , string 接收者uid , string 主题 , string 内容 [, bool instantly , integer 回复信息id , bool 发送者是否根据用户名])
6、具体要看你登录代码。
如选择cookies记录信息。:
list($uid, $username, $password, $email) = uc_user_login($_POST['username'], $_POST['password']);
if($uid > 0) {
setcookie('username', $username, 24 3600);//保留1天
setcookie('password', $password, 24 3600);
echo '登录成功';
} elseif($uid == -1) {
echo '用户不存在,或者被删除';
} elseif($uid == -2) {
echo '密码错';
} else {
echo '未定义';
}
登录代码如果你是这样写的话,那么就可以通过判断$_COOKIE['username'],$_COOKIE['password']是否已定义来判断用户登录。
下载Discuz!社会化登录插件
discuz!X15插件 插件版本:11 更新时间:2011年6月1号 点击下载
discuz!X2插件 插件版本:11 更新时间:2011年6月1号 点击下载
discuz!72插件 插件版本:10 更新时间:2011年4月16号 点击下载
discuz!X15插件 Demo网站演示 http://demodenglucc/Discuz_X15/forumphp
discuz!X2插件 Demo网站演示 http://demodenglucc/Discuz_X20/forumphp
discuz!72插件 Demo网站演示 http://demodenglucc/Discuz72/
产品介绍
1
广泛的社会化媒体登录入口
灯鹭Discuz!插件支持QQ、新浪微博、人人网、开心网、豆瓣、谷歌、雅虎、支付宝、淘宝、网易、腾讯微博、搜狐微博、MSN,天涯,百度15家媒体帐号登录到您的网站。
2
登录同步获取用户资料
论坛可以获得用户的用户名、头像、性别、年龄、所在地等信息。在用户首次登录时,同步到用户的个人中心。
3
同步内容到合作媒体网站
可以在发帖和日志的同时,发布一条新鲜事或者微博到合作媒体网站。可以同步至QQ空间、腾讯微博、新浪微博、人人网、网易微博、搜狐微博。
4
绑定Discuz论坛帐号
合作媒体帐号可以绑定Discuz论坛帐号,以及解除绑定。网站主可以在Discuz后台控制绑定权限,用户绑定论坛帐号,不仅可以使用论坛帐号方便登录,依然可以使用同步内容到合作媒体网站功能。
同一IP登录论坛,会出现这种情况的。
因为同一IP使用5次错误后封闭
仔细想想是不是,需要修改程序,打开loggingphp文件去掉
loginfailed($loginperm);
0条评论