2014-10-27 113 views
1

我有一個URL(/設置)需要指向兩個不同的頁面,這取決於用戶登錄時的安全性。一個頁面是現有的webforms頁面,另一個頁面是新的MVC頁面。這甚至有可能嗎?是否有可能擁有指向兩個不同頁面的單個URL?

附加信息: 當用戶或者是頁面上的URL需要說website.com/settings

解決方案: 深信的PM改變的要求。

+2

根據某些條件,您的操作可能會返回不同的視圖 – Jonesopolis 2014-10-27 15:28:01

+1

您可以隨時重定向請求或服務器的不同內容,但是......這通常是一種不好的做法。 – walther 2014-10-27 15:28:06

回答

0

簡短的回答,是的。你可以通過幾種方法來完成。

  • 的Javascript
  • 模型 - 視圖 - 控制器(Controller)
  • 的ASP.NET Web窗體(方法)

它往往是不良的做法做了這樣的事件,因爲它可以公開數據。這的確是可能的:

的Javascript:

$(document).ready(function() { 
    if($("#Account").val() != '') { 
      $(".Url").attr('href', 'http://www.google.com'); 
    } 
}); 

假裝#Account是一個隱藏字段是從數據庫填充。如果字段不是 null,則修改.Url元素以導航到鏈接。 Web-Forms的這種方法是最簡單的。

web的表單

protected void btnAccount_Click(object sender, EventArgs e) 
{ 
    if(User.IsInRole("Account")) 
      Response.Redirect("~/Admin.aspx"); 

    else 
      Response.Redirect("~/User.aspx"); 
} 

這將使用默認的Windows身份驗證域,你可以彎曲和扭曲使用的數據庫提取數據。一個例子,模型視圖控制器將類似於Controller將簡單地處理該能力。

希望這一點在正確的方向。

+0

對此做出了回答:「做這樣一個事件往往是不好的做法,因爲它可能暴露數據。」我沒有解決這個問題,而是說服PM將要求改變爲更安全的要求。 – 2014-10-27 21:08:48

0

這是一個基於重定向的方法。創建映射到/settings的網頁,並讓此代碼在頁面加載時運行。

if(User.IsAdministrator()) //I take it you have some way of determining who is an Admin, so this is just example code 
    { 
    Response.Redirect("~/AdminSettings.aspx"); 
    } 
else 
    { 
    Response.Redirect("~/UserSettings.aspx"); 
    } 

請注意,您需要管理頁面上的安全性,以確保常規用戶不能直接在那裏導航。

相關問題