zoukankan      html  css  js  c++  java
  • 使用 HttpModel与现有基于共享登录信息( Cookie )的网站进行集成

    /****************************************************************************
    * 功能说明:
    * 1、使用 HttpModel与现有基于共享登录信息( Cookie )的网站进行集成
    * 2、用户自动登录,自动注册,,延时注册,
    * 3、同步退出
    *
    * 使用方法:
    * 见示例web.config
    *
    * 设计编码:shiningrise@gmail.com
    *
    ***************************************************************************
    */

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Web;
    using System.Web.Security;
    using wojilu.Open;

    namespace wojilu.AuthenticationModule
    {
    public class AuthenticationModule : System.Web.IHttpModule
    {
    public void Dispose()
    {
    // throw new NotImplementedException();
    }

    public void Init(HttpApplication context)
    {
    context.BeginRequest += new EventHandler(Application_BeginRequest);
    context.EndRequest += new EventHandler(Application_EndRequest);
    context.AuthenticateRequest += new EventHandler(context_AuthenticateRequest);
    }

    void context_AuthenticateRequest(object sender, EventArgs e)
    {
    HttpApplication application = sender as HttpApplication;
    HttpContext context = application.Context;
    HttpRequest req = context.Request;

    //定义起来测试用
    HttpResponse response = context.Response;

    OpenService openService = new OpenService();
    if (req.IsAuthenticated)
    {
    if (openService.UserIsLogin(context) != true)
    {
    string username = context.User.Identity.Name;
    // response.Write("username=" + username);

    if (openService.UserIsRegister(username, context))
    {
    openService.UserLogin(username, context);
    this.UpdateUserProfile(username);
    }
    else
    {
    string userPwd = GetRandomNumberString(16);
    string userEmail = string.Format("{0}@lcsyzx.cn", username);
    openService.UserRegister(username, userPwd, userEmail, null, "home,blog,photo,microblog,friend,visitor,forumpost,about,feedback,share");
    }
    }
    }
    else
    {
    // response.Write(" IsAuthenticated = false ");
    openService.UserLogout(context);
    }
    }

    public void Application_BeginRequest(object sender, EventArgs e)
    {

    }

    public void Application_EndRequest(object sender, EventArgs e)
    {
    //HttpApplication application = sender as HttpApplication;
    //HttpContext context = application.Context;
    //HttpResponse response = context.Response;

    // response.Write("这是来自自定义HttpModule中有EndRequest");
    }

    /// <summary>
    /// 更新 Profile 的真实名到 wojilu
    /// </summary>
    /// <param name="usr"></param>
    private void UpdateUserProfile(string username)
    {
    UserProfile userProfile = new UserProfile();//(UserProfile)ProfileBase.Create(usr.UserName, true);
    userProfile.Initialize(username, true);
    wojilu.Members.Users.Domain.User usr = new OpenService().getUserByName(username);
    //UserName LoginUserName FullName UserGroup CurJi CurBh CurBnbh
    if (userProfile.UserGroup == "学生")
    usr.RealName = string.Format("{0}({1})班{2}", userProfile.CurJi, userProfile.CurBh, userProfile.FullName);
    else if (userProfile.UserGroup == "教师")
    usr.RealName = userProfile.FullName;
    else
    usr.RealName = string.Format("{0}{1}", userProfile.UserGroup, userProfile.FullName);

    usr.Pwd = GetRandomNumberString(16);
    if (usr.Name != "admin")
    usr.update();
    // db.update(usr, "RealName");
    // db.update(usr, "Pwd");
    }

    /// <summary>
    /// 生成随机数字字符串
    /// </summary>
    /// <param name="int_NumberLength">数字长度</param>
    /// <returns></returns>
    private string GetRandomNumberString(int int_NumberLength)
    {
    bool onlyNumber = false;
    Random random = new Random();
    string strings = "123456789";
    if (!onlyNumber) strings += "abcdefghjkmnpqrstuvwxyz";
    char[] chars = strings.ToCharArray();
    string returnCode = string.Empty;
    for (int i = 0; i < int_NumberLength; i++)
    returnCode += chars[random.Next(0, chars.Length)].ToString();
    return returnCode;
    }
    }
    }
  • 相关阅读:
    超链接导航栏案例
    css中定位功能的特性
    background的使用
    数据库单表查询
    各种算法
    面向对象能做什么和特性及嵌套
    c3算法详解
    面向对象继承
    生成器
    迭代器
  • 原文地址:https://www.cnblogs.com/shiningrise/p/2291268.html
Copyright © 2011-2022 走看看