none
asp.net mvc下identity在驗證失敗時的導頁設定 RRS feed

  • 問題

  • 在asp.net mvc下使用identity2.0
    在使用[Authorize(Roles="xxx")]驗證角色時
    要是權限不足會自動導入登入頁

    想請問如果想要導向其他頁面的話,有甚麼適當的改法嗎?
    能夠透過改web.config的方式進行調整嗎?

    目前看過的寫法有
    1.使用<authentication mode="Forms">
    2.寫個新的class繼承AuthorizeAttribute,然後override HandleUnauthorizedRequest
    2017年4月20日 上午 03:06

所有回覆

  • 你好,你可以試試用以下的code

    protected void Page_Load(object sender, EventArgs e)
        {
            if (User.Identity.IsAuthenticated)
            {
    
                // if they came to the page directly, ReturnUrl will be null.
                if (String.IsNullOrEmpty(Request["ReturnUrl"]))
                {
                     /* in that case, instead of redirecting, I hide the login 
                        controls and instead display a message saying that are 
                        already logged in. */
                }
                else
                {
                Response.Redirect("~/AccessDenied.aspx");
                }
            }
        }


    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    請記得將對您有幫助的回覆 標示為解答 以幫助其他尋找解答及參與社群討論的朋友們。
    Please remember to click Mark as Answer on the post that helps you. This can be beneficial to other community members reading the thread.

    2017年4月20日 上午 04:23
  • 使用<authentication mode="Forms">不就是改 Web.config 嗎...

    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2017年4月21日 上午 12:49
    版主
  • 使用<authentication mode="Forms">不就是改 Web.config 嗎...

    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    開啟MVC專案使用預設的Identity驗證方式時

    web.config就有

    <authentication mode="None" />

    還有

    <remove name="FormsAuthentication" />

    我想這是要停用FormsAuthentication吧

    使用<authentication mode="Forms">不就是還是要使用FormsAuthentication?

    這是表示Identity本身不支援透過改web.config的方式來調整驗證失敗的導頁,需要透過使用FormsAuthentication才行嗎?

    我驗證的部分並不熟,這問題也是在學習與研究中遇到而提出的,如果認知有誤的話煩請提出。

    2017年4月21日 上午 02:14
  • ASP.NET Identity不是Forms驗証, 要透過自訂的Attribute指定權限不足欲顯示的頁面
    2017年4月21日 上午 02:20
  • 一開始會問是覺得當明明已登入狀態點到沒權限的連結就導到登入頁還蠻奇怪的,想知道怎麼回事以及有沒有適當的改法

    例如:知道是哪段邏輯或設定會導到登入頁然後改掉,而且不用form驗證相關

    問之前自己也有查些資料,stackoverflow的那篇我也有查過

    來這問了問題後自己也有再查

    有種做法沒人提到,稍微講一下

    在Startup.Auth.cs裡的configureAuth()中,有段

    LoginPath = new PathString("/Account/Login"),
    把路徑改掉的話也能達到類似的效果

    2017年4月21日 上午 06:48
  • 一開始會問是覺得當明明已登入狀態點到沒權限的連結就導到登入頁還蠻奇怪的,想知道怎麼回事以及有沒有適當的改法

    例如:知道是哪段邏輯或設定會導到登入頁然後改掉,而且不用form驗證相關

    問之前自己也有查些資料,stackoverflow的那篇我也有查過

    來這問了問題後自己也有再查

    有種做法沒人提到,稍微講一下

    在Startup.Auth.cs裡的configureAuth()中,有段

    LoginPath = new PathString("/Account/Login"),
    把路徑改掉的話也能達到類似的效果

    你所說的是 ASP.NET MVC中,在App_Start\Startup.Auth.cs 改

    https://docs.microsoft.com/en-us/aspnet/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on

    這是透過app.UserCookieAuthentication,又是另一種做法。這個做法,可以直接不掛上IIS去執行,這部份你可能要學一下Web API

    https://www.asp.net/web-api


    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    請記得將對您有幫助的回覆 標示為解答 以幫助其他尋找解答及參與社群討論的朋友們。
    Please remember to click Mark as Answer on the post that helps you. This can be beneficial to other community members reading the thread.

    2017年4月25日 上午 01:39