我使用aspx和c#来设置登录的身份验证cookie.
FormsAuthentication.SetAuthCookie(UserName, True)
Run Code Online (Sandbox Code Playgroud)
我想在同一个cookie中存储更多信息.我可以为此身份验证Cookie添加值,还是必须使用第二个http cookie?
基本上我正在寻找存储用户的Id所以我可以使用users表行键访问数据库
谢谢,伊甸园
我有一个使用Web API的ASP.NET MVC 4项目.在控制器上,我已使用[Authorize]属性将类设置为需要授权.对于身份验证我使用ASP.NET成员资格提供程序并将我的Web.Config设置为使用"表单"身份验证.这是我被困的地方:
一切都工作得很好,直到我完成测试API的步骤,我想用[Authorize]属性保护控制器,这样我就可以开始对我的Membership Provider中的用户进行身份验证.所以我启动Fiddler并进行相同的调用,添加Authorization:Basic属性以及来自我的会员提供者的用户名:密码,如下所示:

我得到的响应是未经授权的401,在"Auth"下,我得到"没有WWW-Authenticate Header".然后我意识到API正在寻找SHA1编码密钥.所以我从搜索中启动一个SHA1生成器并获取我的用户名的密码:password并更新我的Request Header,如下所示:

这也不起作用,我得到相同的结果.此外,我显然需要某种"共享密钥"与服务器一起使用来解码我的用户名/密码.
所以我的问题:
提前致谢!
asp.net-mvc forms-authentication asp.net-membership fiddler asp.net-web-api
好吧,这不是什么大不了的事,但它让我烦恼,我不能放手.
所以我使用MVC 5.1与.NET 4.5.1和OWIN身份验证.因此,当您创建新的MVC 5项目时,以下内容会自动添加到Web.config中以删除表单身份验证http模块,因为在使用OWIN中间件时不再需要它:
<system.webServer>
<modules>
<remove name="FormsAuthenticationModule" />
</modules>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
现在,因为我们正在删除模块,这意味着它之前已添加,所以这里是注册此http模块的条目C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config:
<httpModules>
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
</httpModules>
Run Code Online (Sandbox Code Playgroud)
这里是C:\Windows\System32\inetsrv\config\applicationHost.configIIS 8.5 的条目,告诉我的应用程序使用该模块:
<system.webServer>
<modules>
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="managedHandler" />
</modules>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
因此,在应用程序级别自动添加到我的Web配置的名称属性为"FormsAuthenticationModule",而两个服务器级别/ asp.net级别配置文件中的条目使用名称属性"FormsAuthentication".那么这里发生了什么?在我看来,由于name属性不匹配,因此不会删除该模块.我只是认为这是一个错字,但在网上搜索后,每个人似乎都在应用程序web.config中使用"FormsAuthenticationModule".这是最新版本的asp.net/iis的最新变化还是我错过了什么?
问1.据我所知FormsAuthenticationModule,订阅了AuthenticateRequest事件,因此只有在触发此事件后才会FormsAuthenticationModule调用.但是下面的引言让我有些困惑:
该
AuthenticateRequest事件表示配置的身份验证机制已对当前请求进行身份验证.
AuthenticateRequest引发事件时,请求(也称为用户)已经过身份验证? 订阅
AuthenticateRequest事件可确保在处理附加模块或事件处理程序之前对请求进行身份验证.
AuthenticatedRequest,那么我们的事件处理程序将在之前被调用FormsAuthenticationModule?这样Application_AuthenticateRequest()叫之前会FormsAuthenticationModule被称为?问2.我正在学习的书建议Application_AuthenticateRequest()我们能够验证用户是否是特定角色的成员,如果没有,我们可以自动添加用户:
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
if (User.Identity.IsAuthenticated && Roles.Enabled)
{
//here we can subscribe user to a role via Roles.AddUserToRole()
}
}
Run Code Online (Sandbox Code Playgroud)
从上面的代码判断,Application_AuthenticateRequest()调用后FormsAuthenticationModule调用,但在其他地方相同的书暗示Application_AuthenticateRequest()在之前调用FormsAuthenticationModule:
Application_AuthenticateRequest在执行身份验证之前调用.这是创建自己的身份验证逻辑的起点.
我错过了什么?
感谢名单
c# asp.net authentication forms-authentication httpapplication
对于表单身份验证,我在web.config中使用了它(请注意域属性):
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" name=".ASPXAUTH" protection="Validation" path="/" domain=".myserver.dev" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
如何在Mvc 5中为新的ASP.NET Identity Framework配置子域之间的单点登录?
更多信息:
我正在创建一个多租户应用程序.每个客户端都在子域上:
client1.myapp.com
client2.myapp.com
我希望用户能够登录client1.myapp.com然后转到client2.myapp.com并仍然登录.使用表单身份验证很容易.我正在试图弄清楚如何使用新的Identity Framework来实现它.
编辑
这是最终为我工作的代码:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "Application",
LoginPath = "/Account/Login",
CookieDomain = ".myapp.com"
});
Run Code Online (Sandbox Code Playgroud) 我正忙着将一个非常小的Web应用程序从ASP.NET MVC 2移植到Ruby/Sinatra.
在MVC应用程序中,当用户登录对数据库进行了正确验证时,FormsAuthentication.SetAuthCookie用于设置持久性cookie.
我想知道在Sinatra中相应的Forms身份验证是什么?所有的身份验证框架看起来都非常笨重,并不是我真正想要的.
我正在创建一个cookie并在成功登录后存储用户名的值.如何在网站打开时访问cookie.如果cookie存在,我想填写cookie值的用户名文本框.以及如何解密该值以获取用户名.我通过从数据库获取用户详细信息来进行服务器端验证.我正在使用vs 2010与c#
FormsAuthenticationTicket tkt;
string cookiestr;
HttpCookie ck;
tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now,
DateTime.Now.AddYears(1), chk_Rememberme.Checked, "User Email");
cookiestr = FormsAuthentication.Encrypt(tkt);
ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);
if (chk_Rememberme.Checked)
{
ck.Expires = tkt.Expiration;
ck.Path = FormsAuthentication.FormsCookiePath;
Response.Cookies.Add(ck);
}
Run Code Online (Sandbox Code Playgroud)
创建cookie,名称为.YAFNET_Authentication,内容已加密
Webconfig:
<forms name=".YAFNET_Authentication" loginUrl="Home.aspx"
protection="All" timeout="15000" cookieless="UseCookies"/>
Run Code Online (Sandbox Code Playgroud) 升级到.Net 4.5后,我现在收到"System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile已过时"的警告,建议使用成员资格API.
这对于新项目来说非常好并且很好,但是在这个阶段(存在用户数据和散列密码),我不能很好地改变到具有可能不同的散列方式的自定义成员资格提供者.
对于像这样的问题,推荐的前进方向是什么?继续使用"过时"调用显然不是建议的路径,它是否被"仅使用成员资格API"以外的其他东西所取代?
我想在用户想要访问登录所需页面时从地址栏中删除"returnurl =/blabla".因为我在登录后尝试将用户重定向到静态页面以进行一些选择.
我怎样才能做到这一点?
我花了一天半的时间试图解决这个问题.基本上有一个ASP.net网站使用Framework 4.0在IIS7上进行表单身份验证.
授权的东西似乎对每个场景都有效,除了没有指定文件(应该解析为默认文档).
例如(请不要在网站上苛刻它仍然被开发;)), http://www.rewardroster.com/Default.aspx完美地工作,这个页面应该允许匿名访问web.config中指定的.
但如果我直接点击www.rewardroster.com它会重定向到登录页面,返回URL设置为"/"或Login.aspx?ReturnUrl =%2f
我试过的一些事情:
1)将身份验证设置为无,然后默认文档工作,这不是问题.
2)为Web.config添加了DefaultDocument属性
3)删除了IIS中默认文档列表中除Default.aspx之外的所有条目
4)在Config中添加了MachineKey条目
5)在IIS中从集成管道切换到经典管道
这是我的配置中的内容:
<authentication mode="Forms">
<forms name="appNameAuth" loginUrl="Login.aspx" protection="All" timeout="60" slidingExpiration="true" defaultUrl="Default.aspx" path="/">
</forms>
</authentication>
</authentication>
<location path="Default.aspx">
Run Code Online (Sandbox Code Playgroud)
非常感谢你的时间,希望有人知道这里发生了什么.