刚学做一个有登录功能的网站,就好像是网上书店差不多,用户登陆后可以订书,加入订单和购买等,用户没登陆就只能看,不可以进行上面的操作,由于对这种网站不了解,我先问这几个没有什么水准的问题啊:
1、这种网站的原理是什么?
2、怎么判断用户是不是登陆了,用户登陆后要怎么保持一个登陆的状态,网上找了一下说用Cookies,但是我不太会用,也不了解。
3、数据库设计有什么不一样的地方吗?
4、我是用 Linq来做的。
5、最好能给一些小例子看看。
6、谢谢各位啊。登陆cookieslinq

解决方案 »

  1.   

    Cookies不会。用linq 你很想跑么???
      

  2.   

    用session。判断一个用户是否登录,检查session中是否存在用户名登录:根据输入的用户名、密码和数据库的比对,如果成功,就将用户名放入session
      

  3.   

    我也看过网上说
    session比较容易丢失数据,是这样吗?
    在登陆页面把用户名放入session后:session["loginname"]=name;(是这样写吗?)
    然后在另外一个页面判断时是不是直接就这样写,不用写其他东西:
     if(session[loginname]=="")

      ....

    else
    {
      ...
    }
      

  4.   

    cookie实现另一个相关的功能,登录的时候你看到有个选项叫“记住密码”,下次登录不用再输入密码。
      

  5.   

    1、这种网站的原理是什么?
    如果你指的是有登陆功能的网站,那原理很简单,client提交用户名密码,server验证通过即可登陆,否则不予登陆。其中会设计到并发等等一系列问题,如果你要往深入的了解的话。
    2、怎么判断用户是不是登陆了,用户登陆后要怎么保持一个登陆的状态,网上找了一下说用Cookies,但是我不太会用,也不了解。
    这个看你的业务逻辑及需求了,你可以存储到数据库中然后从数据库获取用户名密码来验证,保存一个状态你需要设置一个timeout,超时了自动下线(这个需要根据逻辑来判断),下线之后就会失去一些权限。
    3、数据库设计有什么不一样的地方吗?
    数据库设计会增加用户角色,权限的验证等等。
    4、我是用 Linq来做的。
    不明白,你指的是Linq to sql?
    5、最好能给一些小例子看看。
    例子可以google “MVC MSDN”
    6、谢谢各位啊。 
    不用谢!
      

  6.   

    给你到MSDN上面整了一个MVC的例子,带登陆功能的,慢慢看,很详细:
    http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-1
      

  7.   

    还是建议你用cookie,找个例子,封装一下,和session就一样了,别忘了cookie是要加密的呦
      

  8.   


    登陆功能那些我是会做,但是登陆之后要怎么保持一个登陆的状态,就好像淘宝一样,你不按退出登陆的话他都是一直登陆着的,不知道说的清不清楚,就是这个我不知道怎么实现,就是用linq to sql
      

  9.   


    using System;
    using System.Web;
    using Model;/// <summary>
    ///LoginUser 的摘要说明
    /// </summary>
    public class LoginUser
    {
        private HttpCookie Cookie;
        // 登录
        public static void Login(LoginInfo user)
        {
            LoginUser login = new LoginUser();
            login.WriteCookie("Ihdy", user.UserId);
            login.WriteCookie("Ymxe", user.UserName);
            login.WriteCookie("Dmdy", user.Passd);
            login.WriteCookie("Xgng", user.Name);
        }    // 退出
        public static void Logout()
        {
            LoginUser login = new LoginUser();
            login.CookieRemoves("Ihdy");
            login.CookieRemoves("Ymxe");
            login.CookieRemoves("Dmdy");
            login.CookieRemoves("Xgng");
        }    /// <summary>
        /// 添加Cookie
        /// </summary>
        /// <param name="cookieName"></param>
        /// <param name="obj"></param>
        private void WriteCookie(string cookieName, object obj, bool Ext = true)
        {
            if (obj != null)
            {
                Cookie = new HttpCookie(cookieName);
                Cookie.Value = Ext ? HttpUtility.UrlEncode(obj.ToString().Ext_GetEncrypt()) : obj.ToString();
                HttpContext.Current.Response.Cookies.Add(Cookie);
            }
        }    /// <summary>
        /// 清除cookie
        /// </summary>
        /// <param name="cookeName"></param>
        private void CookieRemoves(string cookeName)
        {
            HttpContext.Current.Response.Cookies.Remove(cookeName);
            Cookie = new HttpCookie(cookeName);
            Cookie.Expires = DateTime.Now.AddDays(-100);
            HttpContext.Current.Response.Cookies.Add(Cookie);
        }    /// <summary>
        /// 用户ID
        /// </summary>
        public static int UserId
        {
            get
            {
                if (HttpContext.Current.Request.Cookies["Ihdy"] != null)
                {
                    return int.Parse(HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies["Ihdy"].Value).Ext_GetDecrypt());
                }
                else
                {
                    return 0;
                }
            }
        }    /// <summary>
        /// 用户名
        /// </summary>
        public static string UserName
        {
            get
            {
                if (HttpContext.Current.Request.Cookies["Ymxe"] != null)
                {
                    return HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies["Ymxe"].Value).Ext_GetDecrypt();
                }
                else
                {
                    return string.Empty;
                }
            }
        }    /// <summary>
        /// 用户密码
        /// </summary>
        public static string Passd
        {
            get
            {
                if (HttpContext.Current.Request.Cookies["Dmdy"] != null)
                {
                    return HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies["Dmdy"].Value).Ext_GetDecrypt();
                }
                else
                {
                    return string.Empty;
                }
            }
        }    /// <summary>
        /// 用户姓名
        /// </summary>
        public static string Name
        {
            get
            {
                if (HttpContext.Current.Request.Cookies["Xgng"] != null)
                {
                    return HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies["Xgng"].Value).Ext_GetDecrypt();
                }
                else
                {
                    return string.Empty;
                }
            }
        }
    }
      

  10.   

    上面是一个删减过的例子,你可以根据你的需要完善起来
    Ext_GetEncrypt()是封装的扩展方法
    保存的cookie的名字是混写的
    然后只要和你读取的时候的对象属性对应就ok了
      

  11.   

    1、这种网站的原理是什么?
    ==>没啥原理,你跟着做个小东西,你就明白是啥原理.2、怎么判断用户是不是登陆了,用户登陆后要怎么保持一个登陆的状态,网上找了一下说用Cookies,但是我不太会用,也不了解。
    ==>判断用户是否登录,无非就是耍个小招,用户名、密码验证正确后,然后将某个值,比如用户名或用户ID存储在某个长时间可以保存值的对象中而已。。
    通常可以支持长时间保存的对象,有cookie,也有seesion
    不过cookie是存储在客户端,容易被修改,所以如果采用cookie最好加密
    存储在seesion就像上面说的。加不加密无所谓。。3、数据库设计有什么不一样的地方吗?
    ===》没啥不一样,你怎么存数据,表就怎么存用户数据
    4、我是用 Linq来做的。
    ===>用啥linq to sql或EF或SqlHelper都没啥区别
    5、最好能给一些小例子看看。
    =====》多的要命,http://www.51aspx.com/ 去找吧6、谢谢各位啊。 
    ===》不用谢,给分就行
      

  12.   

    cookie用来记录一个客户会话的私有信息,是个非常有用的web特性。就是这个原理。