webForumDet fria alternativet

Forms-based Authentication

10 svar · 419 visningar · startad av DavidB

DavidBMedlem sedan jan. 20001 372 inlägg
#1

Godkväll!

Tänkte att jag skulle använda mig utav Forms-based Authentication men när jag läser i Quickstarten så uppstår vissa frågor.

1. Jag har följande kod (tagen från Quickstarten) i min web.config

<authentication mode="Forms">
   <forms name=".ASPXCOOKIEDEMO" loginUrl="login.aspx" protection="all" timeout="30" path="/">
                    <!-- protection="[All|None|Encryption|Validation]" -->
   </forms>
</authentication>

Vad jag förstår av exemplerna så om man hamnar på vileken sida som helst i min applikation så skickas man till login.aspx för att loggas in.
Men om det nu är så att jag har två sidor låt oss säga "index.aspx" och "installningar.aspx" och jag vill att när man skall gå in på "installningar.aspx" så skall man skickas till "login.aspx" för att logga in men om man istället går in på "index.aspx" så skall sidan visas utan att man behöver logga in. Förstår ni vad jag menar? Vet nån hur man gör?

2. Har även sett

FormsAuthentication.RedirectFromLoginPage(UserEmail.Value, PersistCookie.Checked);

i quickstarten. Det jag undrar då är vad UserEmail.Value är till för, går det att hämta den datan eller måste man göra som i gamla ASP och sätta en session med värdet? I så fall käns ju hela grejen ganska så meningslös.

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#2

jag gör så här när jag vill att alla ska ha tillgång till vissa sidor

sidan som alla ska få se

<location path="sidan.aspx">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

och den sida jag vill skydda

<location path="enannansida.aspx">
  <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
</location>
DavidBMedlem sedan jan. 20001 372 inlägg
#3

så man måste göra det för varje sida? eller går det att sätta flera sidor med samma inställningar?

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#4

Jag skyddar hela min "huvudmapp" som web.config ligger i så här

<location path="">
  <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
</location>

En undermapp
<location path="mappen">
  <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
</location>

Och sen de sidor som alla ska få besöka

<location path="sidan.aspx">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

och en sida i en undermapp
<location path="mappen/sidan.aspx">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

Jag vet inte om det finns något enklare/bättre sätt att göra det här på

DavidBMedlem sedan jan. 20001 372 inlägg
#5

får det inte att fungera riktigt, om jag har följande kod i min web.config:

<configuration>
  <location path="index.aspx">
    <system.web>
      <authentication mode="Forms">
        <forms name=".ASPXUSERDEMO" loginUrl="login.aspx" protection="All" timeout="15" />
      </authentication>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>
</configuration>

så får jag följande fel:

Parser Error Message: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.

Line 8: <location path="index.aspx">
Line 9: <system.web>
Line 10: <authentication mode="forms">
Line 11: <forms name=".ASPXUSERDEMO" loginUrl="login.aspx" protection="All" timeout="15" />
Line 12: </authentication>

men om jag bara kör följande kod:

<configuration>
  <location path="index.aspx">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>
</configuration>

så händer absolut ingenting.

erkaMedlem sedan dec. 19996 522 inlägg
#6

du måste ställa katalogen som din app körs i som en application i IIS:en

DavidBMedlem sedan jan. 20001 372 inlägg
#7

okej, hur gör man det?

för tillfället ligger allting i som standardwebplats.

erkaMedlem sedan dec. 19996 522 inlägg
#8

ok, starta Internet Information Services högerklicka på mappen där du har dina filer, se till att den är en application under applications settings

DavidBMedlem sedan jan. 20001 372 inlägg
#9

tack, fick det att fungera.

men har fortfarande en fundering, om jag har följande kod:

FormsAuthentication.RedirectFromLoginPage(UserId.Value, false);

kan jag då hämta ut UserId på nåt sätt så man kan använda det på sidorna eller måste man sätta en session?

DavidBMedlem sedan jan. 20001 372 inlägg
#10

har fått mer problem :(

min web.config ser ut såhär:

<configuration>
   <location path="login">
      <system.web>
         <authentication mode="Forms">
            <forms name=".SHAUTH" loginUrl="/login.aspx" protection="All" timeout="1" path="/" />
         </authentication>
         <authorization>
            <deny users="?" />
         </authorization>
      </system.web>
   </location>
</configuration>

/login.aspx har följande kod:

FormsAuthentication.RedirectFromLoginPage(loginId.ToString(),false);

Nu är det så att jag skickas vidare till /default.aspx när jag testar att logga in och vad jag förstår av detta så lyckas inloggningen.
När jag då har blivit inloggad och går in i mappen /login/ (som står med i web.config ovan) så skickas jag iväg till /login.aspx?ReturnUrl=url för att logga in igen, detta vad jag förstår måste det innebära att inloggningen inte gäller undermapparna utan bara rooten. Hur jag skall göra för att få autensieringen att fungera i undermappen?

Sen undrar jag även om det går att ändra vilekn sida man skickas till när man loggat in? Skall jag använda Response.Redirect eller nåt?

DavidBMedlem sedan jan. 20001 372 inlägg
#11

löste det, lade skapade en ny web.config fil och lade i undermappen. då behövde man inte hellat skapa en applikation av undermappen

135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)