Forms 对Admin的后台验证,解决方案(LZD项目中的应用)

首先,对 全局的 web.config 的设置:

 

  1.   <system.web>
  2.     <authentication mode="Forms">
  3.       <forms   loginUrl="admin/login.aspx" protection="All" timeout="30" />
  4.     </authentication>
  5.     <compilation debug="true"/>
  6.   </system.web>

 

 

而后,在 Admin 下增加一个 web.config 文件,并对其进行设置:

 

  1.   <connectionStrings/>
  2.   
  3.   <system.web>
  4.     <authorization>
  5.       <deny users="?"/>
  6.     </authorization>
  7.   </system.web>
  8. </configuration>

 

 

但是,这样一来,就会出现一个问题。Admin文件夹下所有文件都被进行了验证,如果不登陆,该用户是无法看到里面所有的东西,包括 图片 元素。于是,该登陆界面的UI 会变形,(如果应用到了验证码,验证码也会挂掉了)。

 

所以,第三步,应该是,将 这些 图片,验证码文件,都提到 Admin 以外的文件夹。

 

OK! 完成Froms 验证!

 

 

 

Login   的代码:

 

  1.         #region 页面加载事件
  2.         /// <summary>
  3.         /// 页面加载事件
  4.         /// </summary>
  5.         /// <param name="sender"></param>
  6.         /// <param name="e"></param>
  7.         protected void Page_Load(object sender, EventArgs e)
  8.         {
  9.             if (!IsPostBack)
  10.             {
  11.                
  12.             }
  13.         }
  14.         #endregion
  15.         #region 登陆按钮点击事件
  16.         /// <summary>
  17.         /// 登陆按钮点击事件
  18.         /// </summary>
  19.         /// <param name="sender"></param>
  20.         /// <param name="e"></param>
  21.         protected void ImgLogin_Click(object sender, ImageClickEventArgs e)
  22.         {
  23.             #region 验证验证码
  24.             if (Session["CheckCode"] == null || txtVerifyCode.Text == "" || Session["CheckCode"].ToString() != txtVerifyCode.Text)
  25.             {
  26.                 //Response.Write("<script>alert('验证码不正确');</script>");
  27.                 Page.ClientScript.RegisterStartupScript(this.GetType(), """<script>alert('验证码不正确');</script>");
  28.                 this.txtVerifyCode.Text = "";
  29.                 return;
  30.             }
  31.             Session.Remove("CheckCode");
  32.             #endregion
  33.             //过滤用户输入的非法字符
  34.             string name = ParamFilter.FilterSqlString(this.txtUserName.Text.Trim());
  35.             //MD5加密用户密码
  36.             string pwd = UserInfo.Encrypt(this.txtUserPwd.Text.Trim());
  37.             if (UserInfo.UserLogin(name, pwd))
  38.             {
  39.                 string str_Key = this.txtUserName.Text + "_" + this.txtUserPwd.Text;
  40.                 string str_User = Convert.ToString(Cache[str_Key]);
  41.                 #region 实现用户单点登陆代码(SSO)
  42.                 if (str_User == string.Empty)
  43.                 {
  44.                     TimeSpan sessTimeOut = new TimeSpan(0, 0, HttpContext.Current.Session.Timeout, 0, 0);
  45.                     HttpContext.Current.Cache.Insert(str_Key, str_Key, null, DateTime.MaxValue, sessTimeOut, CacheItemPriority.NotRemovable, null);
  46.                     Session["User"] = str_Key;
  47.                     //更新用户登陆时间
  48.                     UserInfo.UpdateLoginTime(name, DateTime.Now);
  49.                     System.Web.Security.FormsAuthentication.SetAuthCookie(this.txtUserName.Text, false);
  50.                     if (Request.QueryString["ReturnUrl"] != null && Request.QueryString["ReturnUrl"] != "")
  51.                     {
  52.                         System.Web.Security.FormsAuthentication.RedirectFromLoginPage(this.txtUserName.Text, false);
  53.                     }
  54.                     else
  55.                     {
  56.                         Session["UserName"] = name;
  57.                         this.Response.Redirect("Default.aspx");
  58.                     }
  59.                 }
  60.                 else
  61.                 {
  62.                     Page.ClientScript.RegisterStartupScript(this.GetType(), """<script>alert('抱歉你已经登陆!');</script>");
  63.                     this.txtUserName.Text = "";
  64.                     this.txtVerifyCode.Text = "";
  65.                     this.txtUserPwd.Text = "";
  66.                     return;
  67.                 }
  68.                 #endregion
  69.             }
  70.             else
  71.             {
  72.                 Page.ClientScript.RegisterStartupScript(this.GetType(), """<script>alert('用户名或密码错误!');</script>");
  73.              
  74.                 this.txtUserName.Text = "";
  75.                 this.txtVerifyCode.Text = "";
  76.                 this.txtUserPwd.Text = "";
  77.                 return;
  78.             }
  79.         }
  80.         #endregion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值