首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请大家帮我看一下这段登陆代码的问题,怎么没有实现角色验证呢? [已结贴,结贴人:liyin_liu]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-17 15:09:01 楼主
    //webconfig:
    <authentication mode="Forms">
          <forms name="FormLogin" loginUrl="~/LogIn.aspx" requireSSL="false" timeout="120" path="/"/>
      </authentication>

    <location path="~/Admins" >
        <system.web>
          <authorization>
            <allow roles="administrator,manager" />
            <deny users="*" />
          </authorization>
        </system.web>
    </location>

    //login.aspx.cs
    protected void Btn_LogIn_Click1(object sender, ImageClickEventArgs e)
            {
                sys_user LoginUser = new sys_user();//创建登陆用户
                string user = tb_account.Text;//用户名
                string password = tb_password.Text;//密码
                int UserID = LoginUser.UserLoginCheck(user, password);//获取用户记录
                if (UserID == 1)
                {
                    string userData = LoginUser.GetUserRole(user);//获取用户角色 
                    System.Web.Security.FormsAuthenticationTicket Ticket = new System.Web.Security.FormsAuthenticationTicket(1, user, DateTime.Now, DateTime.Now.AddMinutes(30), true, userData); //建立身份验证票对象
                    string HashTicket = FormsAuthentication.Encrypt(Ticket);
                    HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket);
                    Response.Cookies.Add(UserCookie);
                    if (Context.Request["ReturnUrl"] != null)
                    {
                        Context.Response.Redirect("~/Admins/Default.aspx");
                    }
                    else
                    {
                        Context.Response.Redirect("~/USers/Default.aspx");
                    }
                }
                else ......

            }
    运行结果是:
    三个帐号登陆: 1 (user)  2(manager) 3(administrator)
    第一次登陆都进到USers/Default.aspx
    注销后出来再登陆就都进到Admins/Default.aspx了
    估计我这个角色登陆验证是错误的,不知道错在哪,我是参考网上资料写的,却没有实现预期结果
    郁闷呐! 希望熟手能出手相救.
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-17 15:11:551楼 得分:20
    注销的时候清除cookie了吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-17 15:12:552楼 得分:0
    我要实现的是1 (user)角色的登陆到USers/Default.aspx
    而2(manager) 3(administrator)角色 登陆到Admins/Default.aspx
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-17 15:14:513楼 得分:0
    我用的是系统的LoginStatus控件
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-17 15:18:104楼 得分:0
    这段代码你自己往Response里增加了一个身份Cookie,而其实persist的, 在注销的时候也要清掉才可以。

    注销的时候用FormsAuthentication.SignOut()方法了吗?或这直接把你的Cookie清掉也可以。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-17 15:24:515楼 得分:0
    我还不了解FormsAuthentication.SignOut()方法的使用啊
    上面的代码都是借鉴网上的
    还希望说清楚点吧,这个方法是什么参数,在那里添加..?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-17 15:37:566楼 得分:0
    这里主要问题还不是和清除Cookie关系大吧
    而是我根据用户角色判断有错啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-18 09:06:357楼 得分:0
    角色判断啊?
    有这方面的资源么
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-18 16:49:318楼 得分:10
    多看看MSDN吧.上面有例子的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-18 17:01:419楼 得分:10
    基本不用自带的控件。这个自己写一下很快的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-19 09:25:4310楼 得分:10
    最好自己写登陆控件.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-19 09:27:0111楼 得分:0
    谢谢了
    问题自己解决了
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved