M4V*_*1CK 3 authentication asp.net-mvc-3
有没有人知道在MVC3中的控制器的Authorize属性的Web.Config AppSettings部分中是否有使用值的方法?
我目前在web.config中使用这样的东西:
<add key="AdminRole" value="Admins"/>
Run Code Online (Sandbox Code Playgroud)
,然后我尝试拉入类并使用Authorize属性上的值,但.NET抱怨值不是常量等.
我只是希望能够使用web.config中的值集来过滤授权,以便不同的部署可以根据系统配置使用角色名称的变体.
任何帮助将不胜感激,谢谢!
这是一个工作示例:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class AuthorizeByConfig : AuthorizeAttribute
{
/// <summary>
/// Web.config appSetting key to get comma-delimited roles from
/// </summary>
public string RolesAppSettingKey { get; set; }
/// <summary>
/// Web.config appSetting key to get comma-delimited users from
/// </summary>
public string UsersAppSettingKey { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (!String.IsNullOrEmpty(RolesAppSettingKey))
{
string roles = ConfigurationManager.AppSettings[RolesAppSettingKey];
if (!String.IsNullOrEmpty(roles))
{
this.Roles = roles;
}
}
if (!String.IsNullOrEmpty(UsersAppSettingKey))
{
string users = ConfigurationManager.AppSettings[UsersAppSettingKey];
if (!String.IsNullOrEmpty(users))
{
this.Users = users;
}
}
return base.AuthorizeCore(httpContext);
}
}
Run Code Online (Sandbox Code Playgroud)
并像这样装饰您的控制器类或方法:
[AuthorizeByConfig(RolesAppSettingKey = "Authorize.Roles", UsersAppSettingKey = "Authorize.Users")]
Run Code Online (Sandbox Code Playgroud)
其中Authorize.Roles和Authorize.Users是web.config appSettings。
| 归档时间: |
|
| 查看次数: |
4095 次 |
| 最近记录: |