当前位置:编程学习 > C#/ASP.NET >>

asp.net身份验证问题!

本人做一个简单系统。普通用户浏览前台。管理员浏览后台。普通用户和管理员都放在一个表中(userinfo)。其中status字段代表权限。0代表普通用户,1代表管理员用户。首页是default.aspx.其中左上角是登陆框。使用Session判断,如果是普通用户,则显示default.aspx.其中登陆框替换为隐藏的panel(其中有各种用户操作);如果是管理员,则response.redirect("~/admin/default.aspx").如何使用身份验证。使得一开始必须进入default.aspx.而且普通用户进普通用户的界面,管理员进管理员的界面。我试的加了个身份验证权限。forms.默认页面和登陆页面都是~/default.<allow deny="?">
结果是:普通用户登陆上是~/default.aspx.管理员也是~/default.aspx.怎样使得管理员用户登陆到~/admin/default.aspx. --------------------编程问答-------------------- 1.if else
2.swatch case
3.when then
4.config配置管理
--------------------编程问答-------------------- 看看我之前的贴吧

Asp.Net身份验证—Form验证
--------------------编程问答-------------------- Forms 验证 --------------------编程问答-------------------- Membership --------------------编程问答-------------------- 继承一个basepage --------------------编程问答-------------------- <allow deny="?">允许匿名用户?

看我博客FORM认证

4篇 --------------------编程问答--------------------
引用 2 楼 nyb869008813 的回复:
看看我之前的贴吧
Asp.Net身份验证—Form验证

... --------------------编程问答-------------------- 还是没个好些的回答。 --------------------编程问答--------------------
引用 8 楼 zhangzhaoyingas 的回复:
还是没个好些的回答。

还是没看文章吧。

呵呵

你可以把你的用户访问页面放一个文件夹里 文件夹里添加一个web.config 然后用
<configuration>
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
</configuration>

这种方式来限定。

管理员也是一样 你看看那篇文章就懂了。 --------------------编程问答-------------------- 文件结构如下:default.aspx 文件夹aspx(存放普通用户的网页) 文件夹admin(存放管理员的网页。)如何解决 --------------------编程问答-------------------- 你就判断一下你的 status 就可以啦

if(user.status==1)
{
   response.redirect("~/admin/default.aspx");
}
else if(user.status==0)
{
   response.redirect("~/default.aspx");
}
session["user"] = user; --------------------编程问答-------------------- 总结下我的意思:在不添加身份验证的情况下。假如有两个用户,user11(普通用户)admin(管理员用户)
首页是~/default.aspx。default.aspx左上角有个panel1,存放登陆框,下面是个panel2,存放用户成功登陆后的操作(如:个人资料,修改密码,购物车,留言板,退出),在未登陆时,panel2是隐藏的,panel1是显示的。普通用户登陆后panel1(登陆框)隐藏,panel2(操作面板)显示,登陆用Session做的。如果是管理员用户,则直接跳转到~/admin/default.aspx.
总之,在未添加身份验证下,普通用户和管理员用户能正常登陆。但是,这时,假如我用user11登陆后,在IE地址栏上输入~/admin/default.aspx。则普通用户进入了管理员界面。
在试着加入身份验证。(Form 登陆和默认页都为~/default.aspx.<deny users="?")后,user11用户成功登陆,admin用户登陆不跳转到~/admin/default.aspx.而是和普通用户一样的~/default.aspx.我觉得是身份验证默认登陆后的页面(我设置的~/default.aspx).所以我的问题就是如何使得普通用户登陆,而且不能查看~/admin/文件夹里面的文件。而管理员用户则直接跳转到管理员界面,而不是身份验证默认页面的影响。 --------------------编程问答-------------------- 我也做过类似的东东,下面是我之前的主要代码,你看下:
 mAgentInfo user = new mAgentInfo();
        user.UserId = TxtLoginId.Text.ToString();
        user.UserPwd = TxtPass.Text.ToString();
        AgentInfoDAL agent = new AgentInfoDAL();

        long id = agent.CheckUser(user);

        if (id > 0)
        {
            string userData = string.Empty;

            DataSet ds = agent.GetUserInfoByID(id.ToString());
           
            Session["ID"] = id.ToString();
            Session["USERID"] = TxtLoginId.Text.ToString();

            userData = id.ToString() + "," + TxtLoginId.Text.ToString().Trim();

            
            string isAdmin = ds.Tables[0].Rows[0]["UserType"].ToString();
            Session["UserType"] = ds.Tables[0].Rows[0]["UserType"].ToString();
            //userData += "," + isAdmin;


            if (ds.Tables[0].Rows[0]["TaobaoId"] != null)
            {
                userData += "," + ds.Tables[0].Rows[0]["TaobaoId"].ToString();
            }


            System.Web.Security.FormsAuthenticationTicket Ticket = new System.Web.Security.FormsAuthenticationTicket(1, TxtLoginId.Text.ToString().Trim(), DateTime.Now, DateTime.Now.AddMinutes(300), true, userData); //建立身份验证票对象 
            string HashTicket = System.Web.Security.FormsAuthentication.Encrypt(Ticket); //加密序列化验证票为字符串 
            HttpCookie UserCookie = new HttpCookie(System.Web.Security.FormsAuthentication.FormsCookieName, HashTicket); //生成Cookie 
            Context.Response.Cookies.Add(UserCookie); //输出Cookie


            if (isAdmin.Equals("9"))
            {
                Response.Redirect("Admin/Default.aspx", false);
            }
            else
            {
                Response.Redirect("User/Default.aspx", false);
            }
            
        }
        else
        {
            return;
        }

web.config的主要配置如下:
<authentication mode="Forms">
<forms loginUrl="LoginError.aspx" name=".WYTASPXAUTH"/>
</authentication>

<location path="Admin">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location> --------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,