2012-03-07 29 views
1

對於一個應用程序,我有用戶有一個配置文件。這個應用程序只是「有了邀請」,我需要用戶填寫其個人資料,然後再做其他事情。ASP.Net MVC 3,如何將最前面的所有頁面重定向到一個動作

我在其配置文件中有一個「IsCompleted」布爾屬性,所以我沒有問題知道用戶是否必須完成它的銘文。

但是,我怎麼能創建一些東西,檢查所有頁面,用戶必須進行身份驗證,用戶必須完成?

我想創建一個自定義的AuthorizeAttribute(事實上,我已經有一個自定義,它檢查一些角色),但我不知道它是否是做這種控件的正確位置,以及如何區分在HandleUnauthorizedRequest中,如果請求由於登錄無效或用戶未填滿信息而被拒絕?

回答

1

你既可以:

一)把它們放入一個「有限」的角色,直到他們進入他們的個人資料,並讓基授權碼處理它,然後將它們添加到「滿」的角色上的細節進入。

b)重寫控制器中的OnActionExecuting方法(或者更好地使用基本控制器),在處理其餘操作之前檢查用戶是否輸入了他們的配置文件。

+0

爲你的A)。我曾考慮過這個問題,但是如果我的配置文件不完整,該如何管理,我會重定向到我的個人資料頁面,否則會重定向到登錄頁面? B)可以通過過濾器來完成嗎? – J4N 2012-03-07 12:55:52

+0

在您的登錄操作中,他們是適當的角色,您將重定向到配置文件頁面。如果他們試圖訪問其他任何東西,他們會回到登錄狀態,嘗試繞過系統自己的錯誤。 – Paddy 2012-03-07 14:11:26

0

如果我明白你的意思,那麼你有這個,只需使用標準的認證方法。不要忘記,您可以使用組和角色,即使用戶通過身份驗證,也可以將其從某些頁面中排除。

+0

與Paddy相同的迴應:「如果我處理不完整的個人資料,我會重定向到我的個人資料頁面,否則會進入登錄頁面? – J4N 2012-03-07 12:56:21

+0

從MSDN:框架返回HTTP 401錯誤狀態(默認重定向到角色提供程序中的登錄頁面啓用)。你可以在一個自定義頁面中使用這個錯誤(在適當的時候重定向),或者在你的控制器的基類中覆蓋OnAuthorize()(檢查你必須檢查並重定向到配置文件頁面的任何不滿意)。 – 2012-03-07 13:24:40

相關問題