我有一個URL(/設置)需要指向兩個不同的頁面,這取決於用戶登錄時的安全性。一個頁面是現有的webforms頁面,另一個頁面是新的MVC頁面。這甚至有可能嗎?是否有可能擁有指向兩個不同頁面的單個URL?
附加信息: 當用戶或者是頁面上的URL需要說website.com/settings
解決方案: 深信的PM改變的要求。
我有一個URL(/設置)需要指向兩個不同的頁面,這取決於用戶登錄時的安全性。一個頁面是現有的webforms頁面,另一個頁面是新的MVC頁面。這甚至有可能嗎?是否有可能擁有指向兩個不同頁面的單個URL?
附加信息: 當用戶或者是頁面上的URL需要說website.com/settings
解決方案: 深信的PM改變的要求。
簡短的回答,是的。你可以通過幾種方法來完成。
它往往是不良的做法做了這樣的事件,因爲它可以公開數據。這的確是可能的:
的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
將簡單地處理該能力。
希望這一點在正確的方向。
對此做出了回答:「做這樣一個事件往往是不好的做法,因爲它可能暴露數據。」我沒有解決這個問題,而是說服PM將要求改變爲更安全的要求。 – 2014-10-27 21:08:48
這是一個基於重定向的方法。創建映射到/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");
}
請注意,您需要管理頁面上的安全性,以確保常規用戶不能直接在那裏導航。
根據某些條件,您的操作可能會返回不同的視圖 – Jonesopolis 2014-10-27 15:28:01
您可以隨時重定向請求或服務器的不同內容,但是......這通常是一種不好的做法。 – walther 2014-10-27 15:28:06