亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么AuthorizeAttribute會重定向到登錄頁面以進行身份??驗證和授權失敗?

為什么AuthorizeAttribute會重定向到登錄頁面以進行身份??驗證和授權失???

江戶川亂折騰 2019-08-29 17:06:33
為什么AuthorizeAttribute會重定向到登錄頁面以進行身份驗證和授權失敗?在ASP.NET MVC中,您可以使用如下標記控制器方法AuthorizeAttribute:[Authorize(Roles = "CanDeleteTags")]public void Delete(string tagName){     // ...}這意味著,如果當前登錄的用戶不在“CanDeleteTags”角色中,則永遠不會調用控制器方法。不幸的是,對于失敗,AuthorizeAttribute返回HttpUnauthorizedResult,它總是返回HTTP狀態代碼401.這導致重定向到登錄頁面。如果用戶未登錄,則這非常有意義。但是,如果用戶已登錄但未處于所需角色,則將其發送回登錄頁面會很困惑。似乎AuthorizeAttribute將身份驗證和授權混為一談。這似乎是ASP.NET MVC的一個疏忽,或者我錯過了什么?我不得不做一個DemandRoleAttribute將兩者分開的東西。當用戶未經過身份驗證時,它會返回HTTP 401,并將其發送到登錄頁面。當用戶登錄但未處于所需角色時,它會創建一個NotAuthorizedResult。目前,這會重定向到錯誤頁面。當然我不必這樣做?
查看完整描述

3 回答

?
當年話下

TA貢獻1890條經驗 獲得超9個贊

將其添加到您的Login Page_Load功能:

// User was redirected here because of authorization section
if (User.Identity != null && User.Identity.IsAuthenticated)
    Response.Redirect("Unauthorized.aspx");

當用戶重定向到那里但已經登錄時,它會顯示未授權的頁面。如果他們沒有登錄,則會顯示登錄頁面。


查看完整回答
反對 回復 2019-08-29
?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

不幸的是,您正在處理ASP.NET表單身份驗證的默認行為。這里討論了一種解決方法(我還沒試過):

http://www.codeproject.com/KB/aspnet/Custon401Page.aspx

(它不是特定于MVC)

我認為在大多數情況下,最好的解決方案是在用戶嘗試到達之前限制對未經授權資源的訪問。刪除/刪除可能將其帶到此未授權頁面的鏈接或按鈕。

在屬性上有一個額外的參數來指定重定向未授權用戶的位置可能會很好。但與此同時,我將AuthorizeAttribute視為一個安全網。


查看完整回答
反對 回復 2019-08-29
  • 3 回答
  • 0 關注
  • 831 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號