标签: sqlroleprovider

大多数人使用.NET的SqlMembershipProvider,SqlRoleProvider和SqlProfileProvider吗?

在开发具有成员资格功能的站点时,大多数人是否使用.NET的SqlMembershipProvider,SqlRoleProvider和SqlProfileProvider?

或者许多人完全建立自己的提供者,甚至自己的会员制度?

SQL提供程序的哪些限制会让您自己推出?

是否可以轻松扩展SQL提供程序以提供其他功能?

对于Reference
Per Scott Gu的博客,Microsoft提供了SqlMembershipProvider的源代码,以便您可以自定义它,而不是从头开始.只是一个FYI.

c# asp.net sqlmembershipprovider sqlroleprovider sqlprofileprovider

8
推荐指数
1
解决办法
5025
查看次数

角色提供程序是否按请求缓存?

我的MVC应用程序在单个页面请求期间在多个位置使用用户角色.我的问题是默认的SqlRoleProvider是否在页面请求的生命周期中缓存当前用户的角色?

例如,我在Controller方法的属性中使用Roles:

[Authorize(Roles = "Admin")]
Run Code Online (Sandbox Code Playgroud)

和自定义代码

if (user.IsInRole(MembershipRole.Admin))
{
     // Do something
}
else if (user.IsInRole(MembershipRole.Printer))
{
     // Do something else
}
Run Code Online (Sandbox Code Playgroud)

如果角色提供程序不缓存角色,是编写从默认角色继承的自定义角色提供程序的最佳解决方案,并覆盖方法以获取角色一次并在请求持续时间内缓存它们?这可以通过Authorize属性和我自己的代码都将使用缓存的角色来完成吗?

(如果您想知道,我不想使用cacheRolesInCookie web.config选项来缓存cookie中的角色).

在此先感谢您的任何建议.

[编辑以包含Joe回答触发的详细信息]

我反编译了System.Web.Mvc.AuthorizeAttribute,AuthorizeCore方法为每个要检查的角色调用以下方法:

httpContext.User.IsInRole
Run Code Online (Sandbox Code Playgroud)

然后窥视System.Web.Security.RolePrincipal(这就是"User"在上面),下面的方法确实使用了用户角色的缓存副本(或者如果为空则填充缓存):

public string[] GetRoles()
public bool IsInRole(string role)
Run Code Online (Sandbox Code Playgroud)

缓存作为字段存储在User上,因此其生命周期是在请求期间.

方法使用以下方法查找角色:

Roles.Providers[this._ProviderName].GetRolesForUser(this.Identity.Name)
Run Code Online (Sandbox Code Playgroud)

因此将使用您为应用程序选择的任何角色提供程序(默认或自定义).

asp.net asp.net-mvc roleprovider sqlroleprovider

8
推荐指数
1
解决办法
3071
查看次数

SqlRoleProvider:调用Roles.GetRolesForUser时出现NullReferenceException

场景:使用SqlRoleProvider进行Sql Server 2012数据库服务器身份验证的WCF服务.WCF托管在IIS7 Web服务器上.

请看这个错误:

System.NullReferenceException:未将对象引用设置为对象的实例.
在System.Web.Security.Roles.GetRolesForUser(String username)

RoleManagement已启用.

在我的本地开发机器(服务器2012,iis7)上,这工作正常.当我登录并调用该方法时,将检索角色.

在另一台服务器(测试环境)上,它无法正常工作.我可以登录(用户通过用户身份验证并通过sql server数据库)但是当我尝试检索该用户的角色时,我得到一个nullreferenceexception.

这怎么可能,有没有人有任何线索可以解决这个问题?

最好的祝福.

authentication wcf iis-7 sqlroleprovider sql-server-2012

7
推荐指数
1
解决办法
2730
查看次数

ASP.NET 3.5 IIS7角色安全实现

我正在使用库存MS Forms Authentication和SqlRolesProvider在IIS7(Server '08)上运行ASP.NET 3.5应用程序.(我使用aspnet_regsql工具生成表).

我们有三个角色:SysAdmins,AppAdmins和Users.所有用户都在用户中,用户可以使用SysAdmins,AppAdmins或两者.

我似乎无法获得一个Admin目录来阻止访问不在SysAdmins和AppAdmins中的用户.它允许所有登录用户,或任何人.

以下是我当前配置的相关位:

<configuration>
  ...
  <system.web>
    <authentication mode="Forms">
      <forms loginUrl="/client/security/login.aspx" timeout="480" />
    </authentication>
    <authorization>
    </authorization>
    <roleManager defaultProvider="SqlRoleProvider" enabled="true" cacheRolesInCookie="true" cookieName="EquityTouch.Roles" cookieProtection="All" cookieSlidingExpiration="true" cookieTimeout="60">
      <providers>
        <clear />
        <add name="SqlRoleProvider" applicationName="EquityTouch" connectionStringName="SQLProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </roleManager>
    ...
  </system.web>
  <system.webServer>
    <security>
      <authorization>
        <add accessType="Deny" users="?" />
      </authorization>
    </security>
    ...
  </system.webServer>
  <location path="admin">
    <system.webServer>
      <security>
        <authorization>
          <remove users="*" roles="" verbs=""/>
          <add accessType="Allow" roles="SysAdmins,AppAdmins" />
        </authorization>
      </security>
    </system.webServer>
    <system.web>
      <authorization>
        <deny users="*"/>
        <allow roles="SysAdmins,AppAdmins"/> …
Run Code Online (Sandbox Code Playgroud)

iis-7 web-config asp.net-3.5 sqlroleprovider

3
推荐指数
1
解决办法
2192
查看次数

高级.NET成员/角色提供程序

我需要一个具有以下功能的RoleProvider:

动态分配角色到任务
认证/授权IPrincipals基于他们有权访问的系统中的动态分配任务
报告显示当前登录的用户以及其他常见用法统计信息.

我很确定我将不得不自己动手,但我想确保我不会错过任何OSS甚至是MS.

我也在使用ASP.NET MVC,所以我的基本计划是编写一个自定义属性,如:[Authorize(Task=Tasks.DeleteClient)] 将它放在需要授权的方法上.我将根据用户在数据库中配置的任何设置,根据角色授权任务,而不是根据角色进行授权.

思考?

asp.net asp.net-mvc roleprovider sqlroleprovider

0
推荐指数
1
解决办法
1173
查看次数