[英]C# MVC NerdDinner authorization helper method problem
我目前正在閱讀ASP.NET MVC NerdDinner教程,並且遇到與用戶授權有關的特定幫助器方法的問題。 這個想法是,只有“擁有”特定晚餐的用戶才可以編輯或刪除它(基於Dinner對象的HostedBy屬性)。
晚飯對象中有以下方法:
public partial class Dinner {
public bool IsHostedBy(string userName) {
return HostedBy.Equals(userName, StringComparison.InvariantCultureIgnoreCase);
}
// other stuff removed for brevity
}
在我的視圖中,我試圖根據登錄用戶是否是晚餐的主持人顯示/隱藏鏈接:
<% if (Model.IsHostedBy(Context.User.Identity.Name)) { %>
<%= Html.ActionLink("Edit Dinner", "Edit", new { id = Model.DinnerID })%>
|
<%= Html.ActionLink("Delete Dinner", "Delete", new { id = Model.DinnerID })%>
<% } %>
問題在於IsHostedBy()永遠不會返回true。 我已經將User.Identity.Name和Dinner.HostedBy寫入屏幕以驗證它們是否相同,但是該方法仍然返回false。 我不確定如何找到問題所在。
我是C#和ASP.NET MVC的新手,因此很可能缺少一些簡單的東西。 感謝您的幫助,如果需要,我很樂意發布更多信息。
我猜HostedBy和userName實際上不是相同的字符串!
一些調試思路:
1)嘗試強制其始終返回true:
public bool IsHostedBy(string userName) {
return true;
}
如果這樣可以使true返回視圖,則至少您可以知道正在執行IsHostedBy方法中編寫的代碼。
2)添加一個控制台輸出,自己查看兩個字符串是否確實相等:
public bool IsHostedBy(string userName) {
Console.WriteLine("userName: {0} / HostedBy: {1}", userName, HostedBy);
return true;
}
這將幫助您檢查這些項目的值。 或者,您可以只在return語句中設置一個斷點,然后查看它們的含義。
當我在寫的時候,我不妨寫答案。
檢查兩個字符串中的錯誤空格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.