Avatar billede Slettet bruger
01. august 2006 - 22:30 Der er 26 kommentarer og
1 løsning

Login ved brug af cookies og ikke web.config

Hej

Jeg tænker at lave et login, men i stedet for at lukke filer/mapper med en/flere web.config filer, så vil jeg lave det ved at der laves en cookie og i toppen af hver side laves et tjek. Tjekket kontrollere om cookien eksisterer og om den indeholder de korrekte oplysninger for at loade siden.

Jeg tænker at det er nemmere på denne måde, idet jeg ønsker at brugeren kan ændre username og passeword via en aspx-side/database.

Spørgsmålet er nu:

Er der væsentlige forhold der gør at ovenstående absolut ikke er en god ide? Og/eller er der noget jeg endnu ikke ved, der kan løses mit problem på en bedre måde?
Avatar billede snepnet Nybegynder
01. august 2006 - 23:23 #1
Hvorfor vil du ikke benytte konfigurationsfiler?
(roller kan persisteres i cookies automatisk ved at sætte cacheRolesInCookie
="true" på din rolemanager i web.config).
Mvh
Avatar billede snepnet Nybegynder
01. august 2006 - 23:24 #2
Hvis du bruger 2.0 er det hele sådan set fikst og færdigt - inklusiv muligheder for at oprette brugeren, ændre adgangskoder etc.
Mvh
Avatar billede Slettet bruger
02. august 2006 - 07:57 #3
OK.
Det jeg ikke kan gennemskue er hvordan jeg kan ændre
<user name="test" password="test"/>
i web.config vha en aspx-side/database?
Avatar billede Slettet bruger
02. august 2006 - 07:57 #4
Jeg bruger forresten 2.0
Avatar billede snepnet Nybegynder
02. august 2006 - 08:59 #5
Der er kommet et nyt konfigurations api, så du kan sagtens udføre ændringen i web.config, men det system de har leveret til brugerhåndtering er pr. default koblet op imod en sql-server.
Der er ingen grund til at benytte web.config til at skrive brugere i.
http://weblogs.asp.net/scottgu/archive/2006/02/24/ASP.NET-2.0-Membership_2C00_-Roles_2C00_-Forms-Authentication_2C00_-and-Security-Resources-.aspx
Mvh
Avatar billede snepnet Nybegynder
02. august 2006 - 09:13 #6
Den nemmeste måde at prøve det af på er:

Angiv i din konfigurationsfil at du vil benytte formsauthentication:
<authentication mode="Forms"/>

Lav en subfolder på dit site - kald den hvad du vil.
Læg i den folder en web.config med følgende indhold:

<?xml version="1.0"?>
<configuration>
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
</configuration>

Hvis du starter en vilkårlig side - skulle du gerne få en fejlmelding der fortæller at login.aspx ikke kan findes.
Sådan en laver du, og du trækken en LogIn kontrol ind på siden.

Du laver så også en side hvor du kan oprette brugere, hvilket fikses med CreateUserWizard kontrollen.

Mvh
Avatar billede Slettet bruger
02. august 2006 - 11:15 #7
Er det muligt at skifte til en access-database?
Avatar billede Slettet bruger
02. august 2006 - 11:20 #8
Jeg skal måske lige sige at jeg bruger vb.net
Avatar billede snepnet Nybegynder
02. august 2006 - 11:39 #9
Avatar billede Slettet bruger
02. august 2006 - 12:18 #10
Hej igen

Jeg bruger en express-version af visual studio (VB.Net). Jeg kan kun finde en provider til C#. Findes der en løsning på det? F.eks. en provider som jeg ikke kan finde til VB.net eller er det en ide at installere en express-version af sql? Kan man overhoved det?
Avatar billede snepnet Nybegynder
02. august 2006 - 12:24 #11
Provdideren er ikke sprogafhængig - du skal ikke skrive den selv. Du skal bare kompilere den og bruge den.
Jeg kan bare sende dig en kompileret version, hvis du ikke kan bygge den selv.
Bare læg din @mail herude
Expressversion af sql serveren har du allerede, hvis du har installeret Visual Web Developer... Den følger med.
Mvh
Avatar billede Slettet bruger
02. august 2006 - 12:41 #12
OK - tak. Det vil jeg gerne. Min mail er:
Anthonsen @ bigfoot.com

Skal den bare lægges et bestemt sted i mit projekt?

Hvis jeg allerede har expressversionen af sql, hvad kan så være grunden til at jeg ikke kan add en sql-db (den giver en fejl som jeg ikke forstår)?

Burde der ikke automatisk blive oprette en sql når jeg bruger asp.net-configuration i visual studio? Den siger nemlig: Unable to connect to SQL Server database.
Avatar billede snepnet Nybegynder
02. august 2006 - 12:52 #13
Det er måske kun med Visual Studio den installeres så (eller måske du har fravalgt den under installationen... kan ikke helt huske hvordan det er sat op) -du kan finde den her:
http://msdn.microsoft.com/sql/express/default.aspx
Mvh
Avatar billede Slettet bruger
07. august 2006 - 23:11 #14
Hej igen

Jeg har nu gjort det at jeg har lagt den web.config i "roden" og provideren.dll i bin-mappen. Men jeg mangler jo db. Jeg har prøvet at lægge en tom db i app_data, men så får jeg følgende fejl:

There is a problem with your selected data store. This can be caused by an invalid server name or credentials, or by insufficient permission. It can also be caused by the role manager feature not being enabled. Click the button below to be redirected to a page where you can choose a new data store.

The following message may help in diagnosing the problem: Microsoft Jet-databasemotoren kan ikke finde inputtabellen eller forespørgslen "aspnet_Applications". Kontroller, at den findes, og at navnet er stavet korrekt.

Hvad gør jeg her?
Avatar billede snepnet Nybegynder
07. august 2006 - 23:35 #15
Må jeg se din konfigurationsfil?
Mvh
Avatar billede Slettet bruger
08. august 2006 - 00:08 #16
Den ser du som den du sendte:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
    <connectionStrings>
        <add name="AccessFileName" connectionString="~/App_Data/ASPNetDB.mdb" providerName="System.Data.OleDb"/>
    </connectionStrings>
    <system.web>
        <authentication mode="Forms">
            <forms loginUrl="mylogin.aspx" defaultUrl="Login.aspx"/>
        </authentication>
        <membership defaultProvider="AccessMembershipProvider">
            <providers>
                <clear/>
                <add name="AccessMembershipProvider"
                    type="Samples.AccessProviders.AccessMembershipProvider, SampleAccessProviders"
                    connectionStringName="AccessFileName"
                    enablePasswordRetrieval="false"
                    enablePasswordReset="false"
                    requiresUniqueEmail="false"
                    requiresQuestionAndAnswer="false"
                    minRequiredPasswordLength="1"
                    minRequiredNonalphanumericCharacters="0"
                    applicationName="SampleSite"
                    hashAlgorithmType="SHA1"
                    passwordFormat="Hashed"/>
      </providers>
        </membership>
        <roleManager enabled="true" defaultProvider="AccessRoleProvider" cacheRolesInCookie="true" cookieName=".ASPXROLES" cookieTimeout="30" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="All">
            <providers>
                <add name="AccessRoleProvider"
                    type="Samples.AccessProviders.AccessRoleProvider, SampleAccessProviders"
                    connectionStringName="AccessFileName"
                    applicationName="SampleSite"/>
            </providers>
        </roleManager>
        <profile enabled="true" defaultProvider="AccessProfileProvider">
            <providers>
                <add name="AccessProfileProvider"
                    type="Samples.AccessProviders.AccessProfileProvider, SampleAccessProviders"
                    connectionStringName="AccessFileName"
                    applicationName="SampleSite"
                    description="Stores and retrieves profile data from an ASP.NET_Access_Providers1 database."/>
            </providers>
            <properties>
                <add name="FriendlyName" type="string" allowAnonymous="true" serializeAs="String"/>
                <add name="Height" type="int" allowAnonymous="true" serializeAs="String"/>
                <add name="Weight" type="int" allowAnonymous="true" serializeAs="Xml"/>
            </properties>
        </profile>
        <anonymousIdentification enabled="true" cookieName=".ASPXANONYMOUS" cookieTimeout="100000" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="None" domain=""/>
        <webParts>
            <personalization defaultProvider="AccessPersonalizationProvider">
                <providers>
                    <add name="AccessPersonalizationProvider"
                        type="Samples.AccessProviders.AccessPersonalizationProvider, SampleAccessProviders"
                        connectionStringName="AccessFileName"
                        applicationName="SampleSite"/>
                </providers>
            </personalization>
        </webParts>
       
        <!--
        <trust level="Medium"/>
        -->
       
        <compilation debug="true"/>
    </system.web>
</configuration>
Avatar billede snepnet Nybegynder
08. august 2006 - 00:48 #17
Hej igen.

Jeg har sendt dig et projekt du bare kan åbne og benytte. Så har du det at gå ud fra (og så også databasen ;o)

Mvh
Avatar billede Slettet bruger
08. august 2006 - 01:27 #18
Tak.

Sender du et svar?
Avatar billede snepnet Nybegynder
08. august 2006 - 02:21 #19
Jeps
Mvh
Avatar billede Slettet bruger
09. august 2006 - 00:52 #20
Er der en smart måde at lave en side hvor en administrator kan administrer rolle-fordelingen til forskellige usere?
Avatar billede snepnet Nybegynder
09. august 2006 - 01:00 #21
Du kan bruge administrationsværktøjet til det, men jeg regner med at du spørger om hvordan man kunne lave det selv eller?
Mvh
Avatar billede snepnet Nybegynder
09. august 2006 - 01:07 #22
Men det er nu ikke så slemt... Der er jo fine api'er til den slag, og du kan databinde til de collections du får returneret.
F.eks. er det her fint gangbart:

GridView grid = new GridView();
grid.DataSource = MemberShip.GetAllUsers();
grid.DataBind();
form1.Controls.Add(grid);

Og du kan også benytte dig af en objectdatasource control, som hopper direkte på api'et.

Mvh
Avatar billede Slettet bruger
09. august 2006 - 01:21 #23
Tja - jeg vil gerne lave det så nemt som muligt. Men det skal kunne administrers fra en .aspx side i projektet.

Er det så nederste model jeg skal tage udgangspunkt i, eller er der noget man bare kan tage og bruge?
Avatar billede snepnet Nybegynder
09. august 2006 - 01:40 #24
Du kan starte med at lave en side hvor du kan se dine brugere... Det kan du gøre sådan her:

  <asp:GridView
    ID="GridView1"
    runat="server"
    DataSourceID="UsersDataSource">
  </asp:GridView>
  <asp:ObjectDataSource
    ID="UsersDataSource"
    runat="server"
    TypeName="System.Web.Security.Membership"
    SelectMethod="GetAllUsers">
  </asp:ObjectDataSource>

Mvh
Avatar billede snepnet Nybegynder
09. august 2006 - 01:57 #25
Hvis du vil se roller for den enkelte bruger også kan du så gøre sådan her:

      <asp:GridView
        ID="GridView1"
        runat="server"
        DataSourceID="UsersDataSource" DataKeyNames="UserName">
          <Columns>
              <asp:CommandField ShowSelectButton="True" />
          </Columns>
      </asp:GridView>
      <asp:ObjectDataSource
        ID="UsersDataSource"
        runat="server"
        TypeName="System.Web.Security.Membership"
        SelectMethod="GetAllUsers">
      </asp:ObjectDataSource>       
      <br />
        <asp:GridView
            ID="GridView2"
            runat="server"
            AutoGenerateColumns="True"
            DataSourceID="RolesDataSource">
        </asp:GridView>
        <asp:ObjectDataSource
            ID="RolesDataSource"
            runat="server"
            SelectMethod="GetRolesForUser"
            TypeName="System.Web.Security.Roles" OldValuesParameterFormatString="original_{0}">
            <SelectParameters>
                <asp:ControlParameter ControlID="GridView1" Name="username" PropertyName="SelectedValue" Type="String" DefaultValue='<% String.Empty %>' />
            </SelectParameters>
        </asp:ObjectDataSource>

Mvh
Avatar billede Slettet bruger
09. august 2006 - 02:23 #26
Tak.
Avatar billede snepnet Nybegynder
09. august 2006 - 10:39 #27
Det var så lidt.... Det er jo ikke noget der sådan direkte kan bruges til noget, men det er da nemt, og et sted at starte.
Mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester