我现在有一个解决方案下有3个不同的项目,每个都牵涉到用户登陆的问题,我现在的疑惑就是怎么在这其中任意一个项目中登陆后再去访问其他项目需要身份验证的页面时不再需要验证而直接登陆?请高手们指点迷津!

解决方案 »

  1.   

    其中一个是论坛,一个是电子商务,另外一个是网上冲洗数码照片的,前两个采用是FORMS验证,最后一个是WINDOWS验证。主要的是程序是网上冲洗照片的,后两个是后来附加的。其中 电子商务和网上冲洗照片的共用一个用户表,论坛的用户信息保存在另外的表中(他有两个数据库),各自对应不同的数据库,有不同的管理后台。请问高手门怎么解决以上的问题呢?
      

  2.   

    细看楼主发言,应该是aspx吧,用session不行吗?
      

  3.   

    passport试一下做个web服务,所有的网站验证全在web服务上做
      

  4.   

    如果是多个网站的话,session好象不能共享,即使有办法共享也是比较麻烦的
      

  5.   

    这个项目的值在另外的项目中还有用吗?我认为用Session是无法实现的,我这几个从根本上就是独立的!
      

  6.   

    你没读懂我的问题,你是怎么部署这些网站的,数据库服务器有几个?WINDOWS认证,采用什么方式(basic/digest/certificate/integrated)?>>>>其中 电子商务和网上冲洗照片的共用一个用户表,论坛的用户信息保存在另外的表中(他有两个数据库),各自对应不同的数据库,有不同的管理后台既然是2个不同的用户数据库,之间没联系的话,应该需要2次认证吧,否则从论坛到电子商务,假如某个用户不在电子商务的话,你怎么允许他做什么需要授权的操作?没很好的方法,普通的方法是采用后台数据库的方法,参考Single Sign-On Enterprise Security for Web Applications
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/singlesignon.asp
      

  7.   

    我的几个项目的配置文件如下:电子商务:
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <appSettings>
    <add key="SiteName" value="电子商务 - 购物中心"></add>
    <add key="Conn" value="user id=sa;password=123qwe;data source=localhost;initial catalog=EMall;persist security info=False;workstation id=CSharp;packet size=4096"></add>
    </appSettings>
    <system.web>
    <pages validateRequest="false" />
    <compilation defaultLanguage="c#" debug="true" />
    <authentication mode="Forms">
    <forms name="FormsAuth" loginUrl="Login.aspx" protection="All" path="/" />
    </authentication>
    <customErrors mode="RemoteOnly" defaultRedirect="ErrorPage.aspx" />
    </system.web>
    <location path="Member.aspx">
    <system.web>
    <authorization>
    <deny users="?" />
    </authorization>
    </system.web>
    </location>
    <location path="Security.aspx">
    <system.web>
    <authorization>
    <deny users="?" />
    </authorization>
    </system.web>
    </location>
    <location path="Checkout.aspx">
    <system.web>
    <authorization>
    <deny users="?" />
    </authorization>
    </system.web>
    </location>
    <location path="OrderList.aspx">
    <system.web>
    <authorization>
    <deny users="?" />
    </authorization>
    </system.web>
    </location>
    <location path="OrderDetails.aspx">
    <system.web>
    <authorization>
    <deny users="?" />
    </authorization>
    </system.web>
    </location>
    </configuration>
    论坛:
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <appSettings>
         <add key="msdsn" value="workstation id=YRJ008;server=202.196.46.149;packet size=4096;user id=sa;initial catalog=kaersoft_Site;persist security info=True;password=123qwe"></add>
        <add key="data" value="workstation id=YRJ008;server=localhost;packet size=4096;user id=sa;initial catalog=kaersoft_Forum;persist security info=True;password=123qwe"></add>
    <add key="ForumName" value="技术论坛"/> 
    <add key="Edition" value="版本:V1.40"/> 
    <add key="BorowsArea" value="1"/><!-- 允许过客浏览的范围:1所有 2列表 3禁止进入 -->
    <add key="AllowReg" value="1"/><!-- 允许用户注册:1允许 2禁止(当用户量足够后停止注册,可启用该设置) -->
    <add key="SmtpServer" value="SMTP.163.com"/>
    <add key="DomainName1" value="56kc.com"/>
    <add key="DomainName2" value="56kc.com"/>
      </appSettings>   
      <system.web>    <!--  动态调试编译
              设置 compilation debug="true" 以启用 ASPX 调试。否则,将此值设置为
              false 将提高此应用程序的运行时性能。
              设置 compilation debug="true" 以将调试符号(.pdb 信息)
              插入到编译页中。因为这将创建执行起来
              较慢的大文件,所以应该只在调试时将此值设置为 true,而在所有其他时候都设置为
              false。有关更多信息,请参考有关
              调试 ASP.NET 文件的文档。
        -->
        <compilation defaultLanguage="c#" debug="true"><assemblies><add assembly="CrystalDecisions.CrystalReports.Engine, Version=9.1.5000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/><add assembly="CrystalDecisions.ReportSource, Version=9.1.5000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/><add assembly="CrystalDecisions.Shared, Version=9.1.5000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/><add assembly="CrystalDecisions.Web, Version=9.1.5000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/></assemblies></compilation>    <!--  自定义错误信息
              设置 customErrors mode="On" 或 "RemoteOnly" 以启用自定义错误信息,或设置为 "Off" 以禁用自定义错误信息。 
              为每个要处理的错误添加 <error> 标记。          "On" 始终显示自定义(友好的)信息。
              "Off" 始终显示详细的 ASP.NET 错误信息。
              "RemoteOnly" 只对不在本地 Web 服务器上运行的
               用户显示自定义(友好的)信息。出于安全目的,建议使用此设置,以便 
               不向远程客户端显示应用程序的详细信息。
    <customErrors mode="Off"/>
        -->
    <!--  <customErrors mode="RemoteOnly" /> -->
    <customErrors defaultRedirect="default.aspx" mode="RemoteOnly">
    <error statusCode="500" redirect="default.aspx"/>
    </customErrors>     <authentication mode="Forms">
    <forms name=".56KC_FD_COOKIE" loginUrl="Logon.aspx" protection="All" timeout="120">
    <!-- protection="[All|None|Encryption|Validation]" -->
    </forms>
    </authentication> <!--  授权 
               此节设置应用程序的授权策略。可以允许或拒绝不同的用户或角色访问
              应用程序资源。通配符: "*" 表示任何人,"?" 表示匿名
              (未经身份验证的)用户。
        -->    <authorization>
            <allow users="*"/> <!-- 允许所有用户 -->
                <!--  <allow     users="[逗号分隔的用户列表]"
                                 roles="[逗号分隔的角色列表]"/>
                      <deny      users="[逗号分隔的用户列表]"
                                 roles="[逗号分隔的角色列表]"/>
                -->
        </authorization>
        <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true"/>
        <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20"/> <globalization requestEncoding="gb2312" responseEncoding="gb2312"/>
       <!--<pages validateRequest="false"/>-->
    <httpRuntime maxRequestLength="20000"/>
       
     </system.web></configuration>网上冲洗照片:
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <appSettings>
        <!-- 数据库连接字符串-->
    <add key="conn" value="server=localhost;database=EP;uid=sa;pwd=123qwe;"/>
    <add key="kaersoft_site" value="server=localhost;database=Kaersoft_site;uid=sa;pwd=123qwe;"/>
        </appSettings>    
      <system.web>
      <pages 
         validateRequest="false" 
    />    <compilation 
             defaultLanguage="c#"
             debug="true"
        />    <customErrors 
        mode="RemoteOnly" 
        />     <authentication mode="Windows" />     <authorization>
            <allow users="*" /> <!-- 允许所有用户 -->
                <!--  <allow     users="[逗号分隔的用户列表]"
                                 roles="[逗号分隔的角色列表]"/>
                      <deny      users="[逗号分隔的用户列表]"
                                 roles="[逗号分隔的角色列表]"/>
                -->
        </authorization>     <trace
            enabled="false"
            requestLimit="10"
            pageOutput="false"
            traceMode="SortByTime"
    localOnly="true"
        />    <sessionState 
                mode="InProc"
                stateConnectionString="tcpip=127.0.0.1:42424"
                sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
                cookieless="false" 
                timeout="20" 
        />
        <globalization 
                requestEncoding="utf-8" 
                responseEncoding="utf-8" 
       />
       <httpRuntime maxRequestLength="120000" />
     </system.web></configuration>仅有一个数据库服务器,请问怎么解决!