我正在尝试使用ASP.NET MVC中的用户和组对Active Directory进行身份验证.
我在所有类中都添加了以下属性(帐户类除外):
[Authorize (Roles="SubcontractDB Users")]
Run Code Online (Sandbox Code Playgroud)
该组位于活动目录中的OU = Area-> OU = Groups-> OU = Company-> CN = SubcontractDB下.我假设我还需要在web.config中设置一个RoleManager,我试图按如下方式进行:
<roleManager defaultProvider="ADRoleProvider">
<providers>
<clear />
<add name="ADMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider"
connectionStringName="ADConnectionString"
attributeMapUsername="sAMAccountName" />
</providers>
</roleManager>
Run Code Online (Sandbox Code Playgroud)
我的连接字符串是:
<add name="ADConnectionString"
connectionString="LDAP://blah.com:389/DC=blah,DC=wateva,DC=com"/>
Run Code Online (Sandbox Code Playgroud)
显然我做错了,因为这不起作用.我想要做的就是允许访问属于AD中某个组成员的用户.
如何创建自定义AuthorizeAttribute,以字符串参数的形式指定消息,然后将其传递到登录页面?
例如,理想情况下执行此操作会很酷:
[Authorize(Message = "Access to the blah blah function requires login. Please login or create an account")]
public ActionResult SomeAction()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
然后,在Login操作中,我可以这样做:
public ActionResult Login(string message = "")
{
ViewData.Message = message;
return View();
}
Run Code Online (Sandbox Code Playgroud)
最后在视图中我可以这样做:
@if (!String.IsNullOrEmpty(ViewData.Message))
{
<div class="message">@ViewData.Message</div>
}
<form> blah blah </form>
Run Code Online (Sandbox Code Playgroud)
基本上我想将自定义消息传递到登录页面,以便我可以显示特定于用户在该特定时间尝试访问的消息.