2013-07-10 80 views
0

我使用ASP.NET授權拒絕用戶在登錄前訪問我的網站,但這也阻止了Register.cshtml頁面。 如何整理我的授權以允許此頁面通過?asp.net授權 - 拒絕所有登錄頁面之前登錄

<system.web> 
<authorization> 
     <deny users="?" /> 
    </authorization> 
    </system.web> 

    <location path="Content"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

    <location path="Register.cshtml"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
+0

[允許匿名在asp.net mvc 3中調用特定動作]的可能重複(http://stackoverflow.com/questions/17568936/allow-anonymous-to-call-certain-action-in-asp -net-mvc-3) – Amit

回答

6

恕我直言,你不應該使用web.config來控制你的應用程序的身份驗證,而應該使用Authorize屬性。

Global.asax文件中添加這下RegisterGlobalFilters方法

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new HandleErrorAttribute()); 
     filters.Add(new AuthorizeAttribute()); 
    } 

,或者你可以用[Authorize]

[Authorize] 
public class HomeController : Controller 
{ 
    ... 
} 

也裝點您的控制器對於要求匿名訪問使用行動AllowAnonymous屬性

[AllowAnonymous] 
    public ActionResult Register() { 
     // This action can be accessed by unauthorized users 
     return View("Register"); 
    } 

Reference

不能使用路由或web.config文件中,以確保你的MVC應用程序。保護MVC應用程序唯一受支持的方式是將Authorize屬性應用於每個控制器,並在登錄和註冊操作中使用新的AllowAnonymous屬性。根據當前的區域做出安全決定是一件非常不好的事情,它會爲您的應用程序打開漏洞。

+0

使用這些屬性,我能夠指定允許哪些角色訪問某些頁面嗎? – Neeta

+1

@尼塔,是的,你可以有足夠的材料來引導你喜歡http://geekswithblogs.net/tyarmer/archive/2010/02/25/strongly-typed-roles-in-mvc-with-authorize-attribute。 aspx – Satpal

+0

啊有趣:) – Neeta

0

發生這種情況,因爲你正在使用

<authorization> 
     <deny users="?" /> 
    </authorization> 

上面的代碼將覆蓋給予文件夾的所有權限,拒絕來自應用大家

好的想法是拒絕用戶folderwise和保持寄存器/登錄/幫助/聯繫頁面在根目錄。

+0

不錯的建議,除非我不認爲這是一個好主意,搞亂文件夾結構只是爲了授權。 – Neeta

+0

同意這將是一種痛苦 –