标签: forms-authentication

如何保持我的Login.aspx页面的ReturnUrl参数覆盖我的ASP.NET登录控件的DestinationPageUrl属性?

我正在使用ASP.NET登录控件表单身份验证来获取ASP.NET Web应用程序的成员资格/凭据.我有PasswordRecovery.aspx这样的页面只能访问匿名用户.当我从这样的页面单击我的登录链接时,登录页面在地址栏中有一个ReturnUrl参数:

http://www.example.com/Login.aspx?ReturnUrl=PasswordRecovery.aspx

然后,在成功登录后,用户将返回到ReturnUrl参数中指定的PasswordRecovery.aspx页面,该页面不再具有访问权限.

asp.net forms-authentication

11
推荐指数
1
解决办法
5908
查看次数

表单身份验证+ ASP.NET MVC绝对ReturnURL

我在服务器上有一个中央身份验证应用程序.服务器b在同一域上有一个或多个需要从服务器a进行身份验证的应用程序.设置它很容易,以便服务器b应用程序重定向到服务器a.什么不是那么容易让ReturnURL变得绝对.

这是皱纹.在服务器b上使用app有两个控制器,一个是公共的,一个是安全的.如果[authorize]装饰放在公共的动作(默认控制器)上,我会得到正确的绝对URL.但是,如果它在它自己的控制器中,我得到一个相对的URL.

我可以拦截消费应用程序中的预请求事件,但我需要网站的某些部分是公开的,而不是整个粉碎.

想法?

asp.net-mvc forms-authentication

11
推荐指数
2
解决办法
2万
查看次数

将FormsAuthentication cookie传递给WCF服务

我有一个与远程WCF Web服务对话的网站.两者都使用相同的自定义FormsAuthentication Provider.我想通过模拟当前登录站点的用户的WCF服务进行身份验证.我已经使用UserName客户端凭据手动执行此操作,但我需要知道用户密码.那么,最有效的是:经过身份验证的用户发出请求,我创建了一个服务客户端并设置了他的凭据:

serviceClient.ClientCredentials.UserName.UserName = username;
serviceClient.ClientCredentials.UserName.Password = password;
Run Code Online (Sandbox Code Playgroud)

但我真正想要的是直接传递FormsAuthentication cookie,因为我不想存储用户密码.

有任何想法吗?

asp.net wcf forms-authentication wcf-security

11
推荐指数
1
解决办法
2万
查看次数

使用ASP.NET MVC和表单身份验证的不同URL的不同LoginUrl

我有一个ASP.NET MVC项目,我想为网站的不同区域提供不同的LoginUrl.根据站点的区域,输入不同类型的凭据.

http://host.com/widget/home应该将用户重定向到http://host.com/widget/logon.

http://host.com/admin/home应该将用户重定向到http://host.com/admin/logon.

到目前为止,我提出的最佳解决方案是在web.config中使用Forms Auth loginUrl ="〜/ Account/Logon":

   <authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="2880"/>
   </authentication>
Run Code Online (Sandbox Code Playgroud)

在帐户的控制器中:

public ActionResult LogOn()
{
   //redirect depending on the returnUrl?
   string returnUrl = ControllerContext.Controller.ValueProvider["ReturnUrl"].AttemptedValue;
   if (returnUrl.StartsWith("/widget"))
   {
       return Redirect(string.Format("/widget/Logon?ReturnUrl={0}", returnUrl));
   }
   if (returnUrl.StartsWith("/admin"))
   {
       return Redirect(string.Format("/admin/Logon?ReturnUrl={0}", returnUrl));
   }
   return View();
}
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

asp.net-mvc forms-authentication

11
推荐指数
1
解决办法
1万
查看次数

ASP.NET子域Cookie(父域和一个子域)

我有一个包含多个子域的应用程序,subone.parent.com,subtwo.parent.com.

我在parent.com/login上有一个登录页面.当用户登录时,我会根据他们所属的域将其重定向到正确的域.这很好用.

FormsAuthenticationTicket ticket = new FormsAuth...
string encTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
cookie.Domain = subone.parent.com
Response.Cookies.Add(cookie)
Run Code Online (Sandbox Code Playgroud)

这为subone.parent.com而不是subtwo.parent.com正确验证了用户身份.但是我想做以下事情.

如果用户返回parent.com,我想知道他们已登录并将其重定向回subone.parent.com.

有没有最佳实践来实现这一目标?或者我是否必须为parent.com设置另一个cookie?

如果重要的话,我在asp.net mvc工作.

谢谢!

asp.net asp.net-mvc forms-authentication

11
推荐指数
1
解决办法
2万
查看次数

我可以模拟使用表单身份验证进行身份验证的客户端并建立与SQL Server的可信连接吗?

这是我一直在努力做的事情

使用表单身份验证和活动目录成员身份构建ASP.NET MVC 3应用程序.Web服务器和数据库是不同的物理服务器,因此是双跃点.

我认为答案是这篇关于约束委派和协议转换的旧文章?到目前为止,我还没有能够使用该技术.

在生产设置中部署到Windows 2008(IIS7)之前,我正在从我的DEV机器(Windows 7,IIS7)中为Web服务器测试这个.Windows 2008会有所作为吗?

什么有效,什么失败

我可以使用表单身份验证和AD成员身份登录.这似乎工作得很好.当我尝试使用此代码进行数据库调用时:

public void AsUser(Action action)
    {
        using (var id = new WindowsIdentity(User.Identity.Name + @"@example.com"))
        {
            WindowsImpersonationContext context = null;
            try
            {
                context = id.Impersonate();
                action.Invoke();
            }
            catch (Exception ex)
            {
                // ex.Message is The type initializer for System.Data.SqlClient.SqlConnection threw an exception
                // buried inner exeption is Requested registry access is not allowed
            }
            finally
            {
                if (context != null)
                {
                    context.Undo();
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

它失败了一个例外,让我相信我在本地DEV服务器上设置了问题.内在的例外是Requested registry …

forms-authentication active-directory trustedconnection asp.net-mvc-3

11
推荐指数
1
解决办法
2444
查看次数

如何在asp.net中删除用户帐户?

我有一个注册页面,我使用了以下演练:创建一个带有成员资格和用户登录的网站来制作我的网页.问题是注册页面创建了用户,但我对如何从存储它的数据库中删除用户帐户一无所知.

c# asp.net forms-authentication c#-4.0

11
推荐指数
3
解决办法
2万
查看次数

手动更新表单身份验证票证:

表单身份验证票证的另一个问题是过早到期.我需要使用滑动Expiration设置为true.我已阅读论坛并了解精度损失的问题,如果请求仅在到期时间的一半之后进行,则只会更新故障单.

问题:在我的webconfig中,我有以下内容:

    <authentication mode="Forms">
        <forms timeout="20" name="SqlAuthCookie" protection="All" slidingExpiration="true" />
    </authentication>
    <sessionState timeout="20" />
    <authorization>
Run Code Online (Sandbox Code Playgroud)

只有在20分钟间隔内没有请求时,用户才必须注销并重定向到login.aspx.问题是用户正在发出请求,但仍然会被抛到登录页面.这不应该发生.我想做的是为每个请求手动重置SqlAuthCookie.

以下是我的代码.它在context.AcquireRequestState上调用.

    void context_AcquireRequestState(object sender, EventArgs e)
    {
        HttpContext ctx = HttpContext.Current;
        ResetAuthCookie(ctx);
     }

            private void ResetAuthCookie(HttpContext ctx)
    {
        HttpCookie authCookie = ctx.Request.Cookies[FormsAuthentication.FormsCookieName];
        if (authCookie == null)
            return;

        FormsAuthenticationTicket ticketOld = FormsAuthentication.Decrypt(authCookie.Value);
        if (ticketOld == null)
            return;

        if (ticketOld.Expired)
            return;

        FormsAuthenticationTicket ticketNew = null;
        if (FormsAuthentication.SlidingExpiration)
           ticketNew = FormsAuthentication.RenewTicketIfOld(ticketOld);

        if (ticketNew != ticketOld)
            StoreNewCookie(ticketNew, authCookie, ctx);
    }

    private void StoreNewCookie(FormsAuthenticationTicket ticketNew, HttpCookie authCookie, HttpContext ctx) …
Run Code Online (Sandbox Code Playgroud)

asp.net forms-authentication httpcookie

11
推荐指数
1
解决办法
8969
查看次数

如何在Nancy中针对Active Directory进行身份验证?

这是一篇过时的文章,但http://msdn.microsoft.com/en-us/library/ff650308.aspx#paght000026_step3说明了我想做的事情.我选择南希作为我的网络框架,因为它的简单性和低礼仪方法.因此,我需要一种使用Nancy对Active Directory进行身份验证的方法.

在ASP.NET中,您只需通过web.config文件中的某些设置即可在基于数据库的成员资格提供程序和Active Directory之间切换.我不需要具体,但在开发和生产之间切换的能力将是惊人的.

如何才能做到这一点?

c# forms-authentication active-directory nancy

11
推荐指数
1
解决办法
2907
查看次数

身份验证后重定向到请求的页面

我正在使用mvc .net应用程序,我正在使用表单身份验证.我希望在用户进行身份验证后将用户重定向到他请求的页面.任何帮助,将不胜感激.

authentication asp.net-mvc forms-authentication asp.net-mvc-3

11
推荐指数
1
解决办法
2万
查看次数