역할 관리자 기능이 활성화되지 않았습니다.
여태까지는 그런대로 잘됐다.
역할 관리자의 활성화 여부를 확인하기 위해 호출 할 수있는 방법이 있습니까?
역할 관리자 기능이 활성화되지 않았습니다.
여태까지는 그런대로 잘됐다.
역할 관리자의 활성화 여부를 확인하기 위해 호출 할 수있는 방법이 있습니까?
답변:
다음의 boolean 속성을 읽어이 작업을 수행 할 수 있습니다.
System.Web.Security.Roles.Enabled
이것은 다음 enabled
의 roleManager
요소 속성 에서 직접 읽습니다 web.config
.
<configuration>
<system.web>
<roleManager enabled="true" />
</system.web>
</configuration>
업데이트 :
자세한 내용은 다음 MSDN 샘플을 참조하십시오 : https://msdn.microsoft.com/en-us/library/aa354509(v=vs.110).aspx
roleManager
활성화됩니다. 그러나 지금 나는 예외를 받고있다Unable to connect to SQL Server database
new를 사용하고 있기 때문에 여기에 있다면 ASP.NET
Identity
UserManager
실제로 찾고있는 것은 RoleManager
:
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
roleManager
역할이 존재하는지, 작성 등을 확인할 수있는 액세스 권한을 제공하며 UserManager
a) 귀하의 db 연결 문자열 (역할이 사용하는 문자열)이 올바른지 확인하고 철자가 올바른지 확인하고 b) RoleManager의 Enabled 플래그가 true로 설정되어 있는지 제안하는 다른 곳에서 2 가지 제안을 찾았습니다. 그 중 하나가 도움이 되길 바랍니다. 그것은 나를 위해했다.
Roles.Enabled를 확인하려고 했습니까? 또한 Roles.Providers를 확인하여 사용 가능한 공급자 수를 확인하고 기본 공급자에 대한 Roles.Provider를 확인할 수 있습니다. null 인 경우는 없습니다.
언급 된 예외로 인해이 질문을 발견했습니다. 내 Web.Config에 <roleManager>
태그 가 없습니다 . Infotekka가 제안한 대로 추가하더라도 데이터베이스 예외로 끝났다는 것을 깨달았 습니다. 여기에있는 다른 답변의 제안을 따른 후에도 문제를 완전히 해결 한 사람은 없습니다.
이러한 Web.Config 태그는 자동으로 생성 될 수 있기 때문에 수동으로 추가하면 문제를 해결하는 것이 잘못되었습니다. 비슷한 경우 Web.Config 및 Visual Studio에서 변경 한 내용을 모두 실행 취소하십시오.
Web.config를 확인하면 이제 Profile , Membership , SessionState 태그 안에 새 RoleManager 태그 안에 하나 이상의 <providers>
태그 가 있어야 합니다.
<roleManager defaultProvider="DefaultRoleProvider">
<providers>
<add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=NUMBER" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</roleManager>
enabled="true"
이렇게 추가하십시오 :
<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
F6빌드하려면 누르 십시오. 이제 예외없이 데이터베이스 업데이트를 진행해도됩니다.
update-database -verbose
및 Seed 메서드는 제대로 실행되고 (다른 곳을 엉망으로 만들지 않은 경우) 데이터베이스에 몇 개의 테이블을 만듭니다.사용하는 경우 다음 ASP.NET Identity UserManager
과 같이 얻을 수 있습니다.
var userManager = Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
var roles = userManager.GetRoles(User.Identity.GetUserId());
예를 들어 사용자의 키를 Guid에서 Int로 변경 한 경우 다음 코드를 사용하십시오.
var roles = userManager.GetRoles(User.Identity.GetUserId<int>());
<roleManager
enabled="true"
cacheRolesInCookie="false"
cookieName=".ASPXROLES"
cookieTimeout="30"
cookiePath="/"
cookieRequireSSL="false"
cookieSlidingExpiration="true"
cookieProtection="All"
defaultProvider="AspNetSqlRoleProvider"
createPersistentCookie="false"
maxCachedResults="25">
<providers>
<clear />
<add
connectionStringName="MembershipConnection"
applicationName="Mvc3"
name="AspNetSqlRoleProvider"
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add
applicationName="Mvc3"
name="AspNetWindowsTokenRoleProvider"
type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
web.config
있습니까? 나는 그것을 넣어 보았습니다Application_Start
This method can only be called during the application's pre-start initialization phase.