2011-07-04 425 views
0

我开发一些网站,使用其他服务的API使用身份验证票。 我有方法GetSessionTicket()从API。现在的问题: 我可以做asp.net认证,这只取决于cookie? 现在我删除有关会员提供的所有部分在web.config中:ASP.NET身份验证

<add name="ApplicationServices" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
    providerName="System.Data.SqlClient" /> 
<membership> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" 
     enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
     maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
     applicationName="/" /> 
    </providers> 
</membership> 
<profile> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
    </providers> 
</profile>--> 
<roleManager enabled="false"> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" /> 
    </providers> 
</roleManager> 

,离开这一点:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
</authentication> 

LogOn支持的逻辑是这样的:

var ticket = SecurityService.GetSessionTicket(model.UserName, model.Password); 
FormsAuthentication.SetAuthCookie(ticket.SessionUserId.ToString(), true); 

是否确定?现在我的ASP.NET授权仅基于cookie,不需要sql server或aspnetdb.mdf,是吗?

回答

1

是的,这样做很好,你实质上是在执行表格身份验证,没有会员资格数据库。您不需要使用成员资格数据库来实现身份验证,并且在代码中设置Cookie即可。