다음은 구현 렌더링입니다.
먼저 위 사진의 기차 예매 링크를 클릭하면 http://학생정보플랫폼 홈페이지가 열립니다. /LoginToTrainSite.asa 페이지.
LoginToTrainSite.asa 페이지의 대략적인 코드는 다음과 같습니다.
<% Response.Buffer = True Response.ExpiresAbsolute = Now() - 1 Response.Expires = 0 Response.CacheControl = "no-cache" Response.AddHeader "Pragma", "No-Cache" //根据用户session获取用户名和密码 %> <html> <body> <div style='display:none'> <form name="myForm" method="post" action="http://火车订票网站/LoginFromOtherSite.aspx"> <input type="hidden" name="UserName" value="<%=userName%>" /> <input type="hidden" name="UserPwd" value="<%=userPwd%>" /> </form> </div> </body> </html> <script language="javascript"> myForm.submit(); </script> LoginFromOtherSite.aspx.cs页面的代码大致如下: using (SqlConnection conn = new SqlConnection(SqlHelper.StudentConnectionString)) { string sql = "select t_stuUser.ID, t_stuUser.stuNumber, t_stuUser.userPassword, t_stuUser.realName, v_stuUser.className, v_stuUser.departmentName " + "from t_stuUser,v_stuUser where t_stuUser.stuNumber=@UserName and t_stuUser.userPassword=@UserPwd and v_stuUser.stuNumber=@UserName"; SqlCommand cmd = new SqlCommand(sql, conn); SqlParameter pUserName = cmd.Parameters.Add("@UserName", SqlDbType.VarChar, 30); SqlParameter pUserPwd = cmd.Parameters.Add("@UserPwd", SqlDbType.VarChar, 150); pUserName.Value = Request.Form["UserName"]; pUserPwd.Value = Request.Form["UserPwd"]; conn.Open(); SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); if (sdr.Read()) { Session["UserID"] = Convert.ToString(sdr["ID"]); Session["StuName"] = Convert.ToString(sdr["realName"]); Session["StuNumber"] = Convert.ToString(sdr["stuNumber"]); Session["Academe"] = Convert.ToString(sdr["departmentName"]); Session["ClassName"] = Convert.ToString(sdr["className"]); Response.Redirect("MyOrder.aspx"); // 登录成功 } else { Response.Redirect("Default.aspx"); //登录失败,用户名或密码错误 } }
마지막으로 LoginFromOtherSite.aspx 페이지가 처리된 후 두 웹사이트 모두 로그인됩니다. 그런데 이 방법을 사용하면 안전하지 않은 경우가 있는지 알고 싶습니다.
어떤 보안 문제가 발생할 수 있나요?
간단한 asp.net Single Sign-On 구현에 대한 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!