2013-10-31 58 views
0

我在我的MVC3應用程序中爲用戶和角色使用自定義成員身份。我有自定義的用戶/角色類。我已經爲此擴展了RoleProvider和MembershipProvider類。使用窗體身份驗證自定義成員身份和MVC3中的角色

我似乎有一個角色在我的應用程序中有時會丟失,我的Authorize [Roles ='xyz']屬性工作不正常,並嘗試重定向到Account/LogOn。當我的用戶登錄到應用程序中,我要做的就是

if (ModelState.IsValid) 
      { 
       if (MyCustomSecurity.Login(model.UserName, model.Password, model.RememberMe)) 
       { 
        FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); 
--other stuff 
} 

MyCustomSecurity.Login方法主要查找在數據庫中的用戶時,如果有效將真值了。

當試圖用我的應用程序調試問題,我碰到的鏈接來到下面

http://www.codeproject.com/Articles/578374/AplusBeginner-27splusTutorialplusonplusCustomplusF ASP.NET MVC Forms Authentication + Authorize Attribute + Simple Roles

我應該也可以重寫FormsAuthentication_OnAuthenticate()作爲在這個環節提到?或者RoleProvider擴展類是否處理這個問題?
謝謝

回答

0

如果您在AuthorizeAttribute使用角色和角色是你自己的類,所以你需要重寫RoleProvider,尤其是方法GetRolesForUser:

public class CustomRoleProvider : RoleProvider 
{ 
    public override string[] GetRolesForUser(string username) 
    { 
    // put your logic to discover which roles the user has 
    } 
} 

這樣做之後,你必須註冊你CustomRoleProvider在Web.Config:

<roleManager enabled="true" defaultProvider="CustomRoleProvider"> 
    <providers> 
     <clear/> 
     <add name="CustomRoleProvider" type="%YOURNAMESPACE%.CustomRoleProvider" /> 
    </providers> 
</roleManager> 
+0

嗨安德烈,謝謝你的迴應。我做了兩個,所以我假設我做對了嗎?我似乎仍然遇到窗體身份驗證問題,突然在控制器/方法上使用Authorize進行302重定向循環。調試幕後事件的最佳方法是什麼? Fiddler告訴我角色/用戶cookie仍然存在,但仍然有302重定向到帳戶/登錄無論如何。任何幫助都會很棒。 – SimpleUser

+0

你知道我將如何調試AuthorizeAttribute嗎? – SimpleUser

相關問題